Spring XML-config 中方法的 RequestScope

Spring RequestScope of method in XML-config

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

@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>

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

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

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

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

如有任何帮助,我们将不胜感激!

谢谢!

我设法用 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>