asd_dsa_的gravatar头像
asd_dsa_ 2015-07-26 06:21:42

SSM+shiro框架中@Autowired3总是报循环注入的错误?

主要是下面代码的问题。。。

@Autowired
    private UserService userService;

去掉后就不报错了。。。但是需要用到。

Controller中也会用到上述代码。。。

////////////////////////ShiroDbRealm类

private static Logger logger = LoggerFactory.getLogger(ShiroDbRealm.class);
    private static final String ALGORITHM = "MD5";

    @Autowired
    private UserService userService;

    public ShiroDbRealm() {
        super();
    }

    /**
     * 认证回调函数, 登录时调用.
     */
    @Override
    protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken authcToken)
            throws AuthenticationException {
        UsernamePasswordToken token = (UsernamePasswordToken) authcToken;
        System.out.println(token.getUsername());
        System.out.println(userService);
        User user = userService.UserLogin(token.getUsername(), "a");
        System.out.println(user);
        if (user != null) {
            return new SimpleAuthenticationInfo(user.getUsername(), user.getPassword(), getName());
        } else {
            throw new AuthenticationException();
        }
    }

 

/////////////////////////////////shiro配置文件

<description>Shiro Configuration</description>

    <!-- Shiro's main business-tier object for web-enabled applications -->
    <bean id="securityManager" class="org.apache.shiro.web.mgt.DefaultWebSecurityManager">
        <property name="realm" ref="shiroDbRealm" />
        <property name="cacheManager" ref="cacheManager" />
    </bean>

    <!-- 項目自定义的Realm (存在初始化时的依赖循环问题,由于realm中注入了UserService)-->
    <bean id="shiroDbRealm" class="com.nciae.ufo.realm.ShiroDbRealm">
        <property name="cacheManager" ref="cacheManager" />
    </bean>

    <!-- Shiro Filter -->
    <bean id="shiroFilter" class="org.apache.shiro.spring.web.ShiroFilterFactoryBean">
        <property name="securityManager" ref="securityManager" />
        <property name="loginUrl" value="/index.jsp" />
        <property name="successUrl" value="/views/main.jsp" />
        <property name="unauthorizedUrl" value="/views/error/noperms.jsp" />
        <!-- <property name="filterChainDefinitions">
            <value>
                /index.jsp = authc
                /login.html = anon
                /tologin.html = anon
                /logout.html = anon
                /** = authc
            </value>
        </property> -->
    </bean>

    <!-- 用户授权信息Cache -->
    <bean id="cacheManager" class="org.apache.shiro.cache.MemoryConstrainedCacheManager" />

    <!-- 保证实现了Shiro内部lifecycle函数的bean执行 -->
    <bean id="lifecycleBeanPostProcessor" class="org.apache.shiro.spring.LifecycleBeanPostProcessor" />

    <!-- AOP式方法级权限检查 -->
    <bean class="org.springframework.aop.framework.autoproxy.DefaultAdvisorAutoProxyCreator"
        depends-on="lifecycleBeanPostProcessor">
        <property name="proxyTargetClass" value="true" />
    </bean>

    <bean class="org.apache.shiro.spring.security.interceptor.AuthorizationAttributeSourceAdvisor">
        <property name="securityManager" ref="securityManager" />
    </bean>

//////////////////////////////////////////////////

@Service("userService")
public class UserServiceImpl implements UserService {

    @Autowired
    private UserMapper userMapper;//数据库操作接口
    
    @Override
    public User UserLogin(String username, String password) {
        return this.userMapper.selectLogin(username,password);
    }

}

所有回答列表(1)
tudou的gravatar头像
tudou  LV7 2015年8月12日

不知道你报的什么错。或许你可以这样试试。至于springutil不用我说了吧。

UserService userService=(UserService)springUtil.getBean("userService");

顶部 客服 微信二维码 底部
>扫描二维码关注最代码为好友扫描二维码关注最代码为好友