JAXBContext はスレッドセーフですが、Unmarshaller はそうではありません。アンマーシャラーをリクエスト スコープ Bean にしたいのですが、これを行っています。
<bean id="jaxbContext" class="javax.xml.bind.JAXBContext"
factory-method="newInstance">
<constructor-arg>
<list>
<value type="java.lang.Class">MyType</value>
</list>
</constructor-arg>
</bean>
<bean id="unmarshaller" class="javax.xml.bind.Unmarshaller"
factory-bean="jaxbContext" factory-method="createUnmarshaller"
scope="request">
<aop:scoped-proxy />
</bean>
しかし、問題は、次のエラーが発生することです。
プロキシの作成時にターゲット タイプを特定できませんでした
AOPを使用したSpringセッションスコープBeanの問題を読みましたが、作成したいタイプについてSpringにもっと伝える必要があることを示唆していますが、作成するタイプはインターフェースです。JAXB 実装に基づいてインスタンス化される実際のタイプを探し出し、アンマーシャラー Bean のクラス属性がそれを指すようにする必要がありますか? ちょっと奇妙に思えます。手がかり?
編集:
私の間違いです。これは実際に機能しますが、単体テストで失敗するだけです。春のテストでスコープ付き Bean をリクエストすると役に立ちました。