环境
- shiro 1.4.0
- springboot 2.2.6
- jdk 1.8
问题复现
在使用springboot集成shiro中,在shiro中注入userServiceImpl,会导致userServiceImpl不能被spring代理,导致事务失效。
部分代码
public class MyShiroRealm extends AuthorizingRealm {
@Autowired
UserService userService;
.............
启动时的报错信息如下
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)
解决办法
第一种
加上 @Lazy 注解,告诉spring 懒加载此userService。
public class MyShiroRealm extends AuthorizingRealm {
@Autowired
@Lazy
UserService userService;
.............
第二种
在Realm中选择注入dao层,而不选择service层
public class MyShiroRealm extends AuthorizingRealm {
@Autowired
@Lazy
UserMapper userMapper;
.............