次のモジュールがあります。
@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
- 春のセキュリティ: 4.1.0.RELEASE
UserHolder モジュールを使用する xml-config を持つモジュールの Spring バージョンは次のとおりです。
- 春: 3.2.15.RELEASE
- 春のセキュリティ: 3.2.9.RELEASE
どんな助けでも大歓迎です!
どうも!