【问题标题】:Spring RequestScope of method in XML-configXML-config中方法的Spring RequestScope
【发布时间】:2016-09-21 16:12:48
【问题描述】:

我有一个包含以下内容的模块:

@Configuration
public class UserHolder {

    @Bean
    @RequestScope
    public IUser getUser() {
         return (IUser)SecurityContextHolder.getContext().getAuthentication();
    }
}

IUser 是一个接口,它适用于所有使用此 bean 的 java-config 模块。 @Autowired IUser user

但是,我们有一个带有 xml-config 的旧项目。在那里,bean 在部署时初始化(当然是 null),但是没有代理可以在请求时获取正确的用户。

我现在写的(显然是不正确的):

<bean class="...UserHolder" scope="request">
    <aop:scoped-proxy/>
</bean>

我需要在 XML 中的 UserHolder: getUser 中定义 bean。但是这会返回一个接口,所以我不能在那里定义类......

<bean class="...UserHolder"></bean>
<bean class"...IUser" scope="request"> <!-- Interface can't be inserted here -->
     <aop:scoped-proxy/>
</bean>

定义 UserHolder 的模块的 Spring 版本是:

  • 春天:4.2.6.RELEASE
  • spring-security: 4.1.0.RELEASE

带有 xml-config 且使用 UserHolder 模块的模块的 Spring 版本是:

  • 春天:3.2.15.RELEASE
  • spring-security:3.2.9.RELEASE

任何帮助将不胜感激!

谢谢!

【问题讨论】:

    标签: spring autowired spring-bean xml-configuration requestscope


    【解决方案1】:

    我设法用 factory-beans 修复它:

    <bean id="userHolder"
          class="...UserHolder">
    </bean>
    
    <bean id="user"
          class="...IUser"
          factory-bean="userHolder"
          factory-method="getUser"
          scope="request"
          primary="true">
        <aop:scoped-proxy/>
    </bean>
    

    【讨论】:

      猜你喜欢
      • 2013-12-20
      • 1970-01-01
      • 1970-01-01
      • 2015-02-02
      • 2017-04-22
      • 1970-01-01
      • 1970-01-01
      • 2016-05-12
      • 1970-01-01
      相关资源
      最近更新 更多