解决方法:一、加监听,二、懒加载(@Autowired前加@Lazy)
例如:
二、(每个autowired前都加@lazy)(不推荐)
@Lazy
@Autowired
private UserService userService;
一、
@Bean("securityManager")(推荐)
public SecurityManager securityManager(){DefaultWebSecurityManager securityManager = new DefaultWebSecurityManager();// 设置realm.//securityManager.setRealm(myShiroRealm());必须注掉否则事务将不起作用// 自定义session管理 使用redissecurityManager.setSessionManager(sessionManager());// 自定义缓存实现 使用redissecurityManager.setCacheManager(cacheManagers());//注入Cookie记住我管理器(目前暂时没有用到)securityManager.setRememberMeManager(rememberMeManager());return securityManager;
}
监听:
@Component
public class SpringEventListener {@EventListenerpublic void handleContextRefresh(ContextRefreshedEvent event) {ApplicationContext context = event.getApplicationContext();DefaultWebSecurityManager manager = (DefaultWebSecurityManager) context.getBean("securityManager");AuthorizingRealm realm = (AuthorizingRealm) context.getBean("myShiroRealm");manager.setRealm(realm);}
}