0

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

@Configuration
public class UserHolder {

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

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

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

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

<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
  • 弹簧安全:4.1.0.RELEASE

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

  • 春天:3.2.15.RELEASE
  • 弹簧安全:3.2.9.RELEASE

任何帮助,将不胜感激!

谢谢!

4

1 回答 1

0

我设法用工厂豆修复它:

<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>
于 2016-09-22T08:40:20.053 回答