今天在做Springboot和shiro集成时,发现一个严重的问题。继续查问题,发现这些有问题的service全部被shiro的realm所依赖,所以怀疑是shiro影响了所以做一下测试:shiro中用到的ResourceServicecontroller也调用ResourceService结果发现resourceService的实例如图:发现问题:resourceService的实例不是代理即缓存注解和事务全部生效当我把resourceService从realm依赖中删除时,在controller引用时resourceService的实例就是“代理”即缓存和事务生效结论:只要被shiro的realm所依赖的service,代理会全部失效常用的解决方式有三种:就是realm中不要依赖service,依赖dao延迟加载,就是在实例化shiro的realm时,不去实例化service的bean,等到用的时候再从spring容器中去取对应的Bean这种解决方案让我感觉到:这里是不是存在多个上下文,或者不是spring?
暂无评论