问题复现
在使用springboot集成shiro中,在shiro中注入userServiceImpl,会导致userServiceImpl不能被spring代理,导致事务失效。
部分代码
public class MyShiroRealm extends AuthorizingRealm {
@Autowired
UserService userService;
…
1
2
3
4
启动时的报错信息如下
Bean ‘userServiceImpl’ of type [cn.junengxiong.service.impl.UserServiceImpl] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
1
解决办法
第一种
加上 @Lazy 注解,告诉spring 懒加载此userService。
public class MyShiroRealm extends AuthorizingRealm {
@Autowired
@Lazy
UserService userService;
.............
第二种
在Realm中选择注入dao层,而不选择service层
public class MyShiroRealm extends AuthorizingRealm {
@Autowired
@Lazy
UserMapper userMapper;
.............