Struts2 依赖注入


我目前正在使用 Struts2

和 Struts2-spring 插件创建 Web 应用程序。

这是我的应用程序上下文的一个片段.xml

<bean id="sessionFactory" scope="singleton"
        class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
        <property name="configLocation" value="classpath:hibernate.cfg.xml" />
    </bean>
    <!-- Springs Hibernate Transaction Manager -->
    <bean id="transactionManager"
        class="org.springframework.orm.hibernate4.HibernateTransactionManager">
        <property name="sessionFactory" ref="sessionFactory" />
    </bean>
    <tx:annotation-driven />
    <!-- Create DAO Objects -->
    <bean id = "userDao" class = "org.hitplay.users.dao.UserDao" scope = "singleton">
        <property name ="sessionFactory" ref = "sessionFactory" />
    </bean>
    <bean id = "adminDao" class = "org.hitplay.admin.dao.AdminDao" scope = "singleton">
        <property name ="sessionFactory" ref = "sessionFactory" />
    </bean>
    <bean id="authenticateLoginService" class="org.hitplay.services.AuthenticateLoginService" scope="singleton">
        <property name="userDao" ref="userDao" />
        <property name="adminDao" ref="adminDao" />
    </bean>
    <bean id="accountAuthenticationManager" class="org.hitplay.authentication.manager.AccountAuthenticationManager" scope="singleton">
        <property name="authenticateLoginService" ref="authenticateLoginService" />
    </bean>

这是我的帐户身份验证管理器类

@Transactional
public class AccountAuthenticationManager  implements AuthenticationManager {
 protected static Logger logger = Logger.getLogger("service");
 // Our custom DAO layer
 private AuthenticateLoginService authenticateLoginService;
 public AuthenticateLoginService getAuthenticateLoginService() {
    return authenticateLoginService;
}
public void setAuthenticateLoginService(
        AuthenticateLoginService authenticateLoginService) {
    this.authenticateLoginService = authenticateLoginService;
}
public Authentication authenticate(Authentication auth) throws AuthenticationException {
  System.out.println(authenticateLoginService);
 //Some more codes here
}

正如您在映射中看到的那样,我们将authenticateLoginService注入AccountAuthenticationManager类中。 我们甚至为authenticateLoginService提供了二传手和吸盘手,但正如我们在运行
authenticate(Authentication auth)方法authenticationLoginService返回 null,我们不知道为什么会发生这种情况。请注意,AccountAuthenticationManager 不是 Struts 操作

我们目前正在使用Struts2-Spring插件和Spring Security。

StackOverflow 不喜欢有很长的评论列表,所以我会在这里继续。好的,所以您的系统中有两个不同的AccountAuthenticationManager实例。假设 Spring 在启动时创建的那个叫做 instanceA 和未知的叫做 instanceB 。如果 instanceB 不是由 Spring 容器创建的,那么instanceB无法解决它的依赖关系( AuthenticateLoginService )。如果可以调试到系统中,则可能需要查看线程转储并找出instanceB的时间和位置以及由谁创建和创建?

相关内容

  • 没有找到相关文章

最新更新