この質問に関係のない他のライブラリの中でも、Java 6、Spring Framework 3.1.2、Mule-ESB3.3.0で構築されたエンタープライズアプリケーションがあります。
私たちのBeanとサービスはすべて、自動コンポーネントスキャンと依存性注入(EJBなし、サービスBeanのみ)のために、それぞれJSR-330アノテーションで宣言さ@Named
れています。@Inject
JBoss 4.2.3(テスト環境)にデプロイすると、すべてが正常に機能します。ただし、WebSphere 7にデプロイすると、JSR-330アノテーションが機能していないように見えます。でマークされたBeanは@Named
まったく検出されません。
すべてが正しく設定されていることを確認できます(JBossで動作しているため)。具体的に<context:component-scan />
は、base-package
属性が正しく定義され、scope-resolver
使用するように属性が正しく構成されていますJsr330ScopeMetadataResolver
(これも使用せずに試しました)。
WebSphere 7(7.0.0.23)がそのような種類の注釈をサポートしていない可能性があることを認識しています。私はまだSpringの同等物@Component
でそれをテストしていません。@Autowired
残念ながら、Spring Frameworkを内部で使用している場合でも、クラスがSpringに直接依存しないように、JSR330アノテーションを使用したいと考えています。
それでも、WebSphere7がJSR330アノテーションをサポートしていないという明確なステートメントを探すために、丸1日を費やしましたが、これまでのところ何も見つかりませんでした。
<context:component-scan />
さらに、ファイル内のディレクティブを介して、Spring Frameworkがすべての作業を実行していると想定しているため、なぜ機能しないのかわかりませんapplication-context.xml
。
誰かがこの問題に光を当てることができますか?
WebSphere 7でアノテーションを介して依存性注入をアクティブ化する方法はありますか?
JSR 330 @Named
/@Inject
アノテーションからSpring独自のアノテーションに戻す@Component
と@Autowired
、機能する可能性がありますか?
必死の試みで、Springを拡張ComponentScanBeanDefinitionParser
して、WebSphere7でもJSR330アノテーションを検出できるようにすることはできますか?
何も機能しない場合は、最終的にプレーンXML構成にフォールバックします。ただし、XMLで手動で構成するBeanが数百あるため、これは非常に望ましくありません。