5

春は私が欲しいものをほとんど提供してくれます。Spring では、単に @Component でクラスにアノテーションを付けてから、「context:component-scan」を使用して、Spring が自動的にコンポーネントを検索するようにすることができます。その後、アプリケーション コンテキストを作成し、getBean(String, Class) を呼び出して、任意のインターフェイスまたはクラスの実装を取得できます。

たとえば、「Mp3Service」というインターフェースがあり、「InternetMp3Service」という新しい実装を登録したい場合、@Component アノテーションをクラス定義に追加するだけです。

私にとってこれに関する唯一の問題は、これらすべてをアプレットで使用したいため、アクセス許可「accessDeclaredMembers」に対して java.lang.RuntimePermission 例外が発生することです。アプレットに署名したくないし、Bean の明示的な構成を作成する必要もありません。

私が探しているのは、コンパイル/ビルド時に注釈を通過し、実行時に読み取ることができる構成を作成するフレームワーク/ライブラリです。

たとえば、ここに何も表示されず、問題を解決する価値があると判断した場合、すべてのクラスをスローして特定の注釈を探し、Spring xml 構成ファイルを作成する独自のプログラムを作成できます。しかし、誰かがすでに利用可能なものを今持っているのではないかと思いました。

ありがとう。

4

1 に答える 1

2

このユースケースは実際には理にかなっていますが、まだ誰も実装していないと確信しています。私はそれを行う2つの方法を見ます:

a) Pluggable 注釈処理 APIを使用します。ここでの問題は、Spring が注釈をスキャンするときに非常に高度なロジックを実行することであり、おそらく注釈プロセッサ用にそれを再実装する必要があります。

b) Spring が行うことを行うメイン クラスを使用する (org.springframework.context.annotation.ComponentScanBeanDefinitionParser のソースを見て、どこから始めればよいかを理解してください)。メイン クラスを maven または ant ビルドに接続して、コンパイル時に自動的に実行されるようにします。ここでの問題は、ソースではなくコンパイルされたクラスで作業する必要があるため、コンパイル時に Service Locator クラスを使用できないことです。

于 2011-06-08T16:46:52.323 に答える