今天启动工程时在控制台发现一段不影响项目加载的日志,如下
10:14:35 [DefaultSingletonBeanRegistry.getSingleton] [DEBUG] Creating shared instance of singleton bean
'shiroFilter
'
10:14:35 [AbstractBeanFactory.getTypeForFactoryBean] [DEBUG] Ignoring bean creation exception on FactoryBean
type
check: org.springframework.beans.factory.BeanCurrentlyInCreationException: Error creating bean with name
'shiroFilter'
: Requested bean is currently
in
creation: Is there an unresolvable circular reference?
在网上搜索了一下,发现将自定义UserRealm做一下修改即可
1、将userService属性的Autowired注解去掉,增加getter和setter方法
public class UserRealm extends AuthorizingRealm {
//@Autowired
private UserService userService;
public UserService getUserService() {
return userService;
}
public void setUserService(UserService userService) {
this.userService = userService;
}
}
2、修改spring-shiro.xml配置文件,通过在xml文件配置的形式注入
userService
的实例
<!-- Realm实现 (解决初始化时的依赖循环问题,通过这里向realm中注入userservice实现)-->
<bean id="userRealm" class="com.ccb.instal.common.user.realm.UserRealm" depends-on="userServiceImpl">
<!-- <property name="credentialsMatcher" ref="credentialsMatcher"/> -->
<property name="cachingEnabled" value="false"/>
<property name="authenticationCachingEnabled" value="false"/>
<property name="authenticationCacheName" value="authenticationCache"/>
<property name="authorizationCachingEnabled" value="false"/>
<property name="authorizationCacheName" value="authorizationCache"/>
<property name="userService" ref="userServiceImpl"></property>
</bean>