0

У меня есть модуль со следующим:Spring RequestScope метода в XML-конфигурации

@Configuration 
public class UserHolder { 

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

IUser является интерфейсом, и это отлично работает для всех модулей Java-конфигурации, которые используют этот компонент. @Autowired IUser user

Однако у нас есть старый проект с xml-config. Там компонент инициализируется по времени развертывания (что, конечно, null), но нет прокси-сервера, чтобы получить правильного пользователя во время запроса.

То, что я написал сейчас (что, очевидно, неверно):

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

мне нужно определить боб в UserHolder: GetUser в XML. Но это возвращает интерфейс, так что я не могу определить класс там ...

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

пружинные версии для модуля, который определяет UserHolder являются:

  • весна: 4.2.6.RELEASE
  • весна-безопасности: 4.1.0.RELEASE

пружинные версии для модуля с XML-конфигурации, который использует модуль UserHolder являются:

  • весна: 3.2.15.RELEASE
  • весна-безопасности: 3.2.9.RELEASE

Любая помощь будет оценен по достоинству!

Thx!

ответ

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>