Spring RequestScope метода в XML-конфиге
У меня есть модуль со следующим:
@Configuration
public class UserHolder {
@Bean
@RequestScope
public IUser getUser() {
return (IUser)SecurityContextHolder.getContext().getAuthentication();
}
}
IUser
Интерфейс, и это прекрасно работает для всех модулей java-config, которые используют этот компонент. @Autowired IUser user
Однако у нас есть более старый проект с xml-config. Там bean-компонент инициализируется во время развертывания (которое, конечно, равно нулю), но нет прокси-сервера для получения правильного пользователя во время запроса.
Что я написал сейчас (что явно неверно):
<bean class="...UserHolder" scope="request">
<aop:scoped-proxy/>
</bean>
Мне нужно определить bean-компонент в UserHolder: getUser в XML. Но это возвращает интерфейс, поэтому я не могу определить класс там...
<bean class="...UserHolder"></bean>
<bean class"...IUser" scope="request"> <!-- Interface can't be inserted here -->
<aop:scoped-proxy/>
</bean>
Версии Spring для модуля, который определяет UserHolder:
- весна: 4.2.6. ВЫПУСК
- Spring-Security: 4.1.0. РЕЛИЗ
Версии Spring для модуля с xml-config, использующего модуль UserHolder:
- весна: 3.2.15.Релиз
- Spring-Security: 3.2.9. РЕЛИЗ
Любая помощь будет оценена!
Спасибо!
1 ответ
Мне удалось это исправить с помощью фабричных бобов:
<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>