この質問に関係のない他のライブラリの中でも、Java 6、Spring Framework 3.1.2、Mule-ESB3.3.0で構築されたエンタープライズアプリケーションがあります。
私たちのBeanとサービスはすべて、自動コンポーネントスキャンと依存性注入(EJBなし、サービスBeanのみ)のために、それぞれJSR-330アノテーションで宣言さ@Namedれています。@InjectJBoss 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が数百あるため、これは非常に望ましくありません。