2011-08-16 2 views
3

CDI(Context Dependency Injection)フレームワークには、Annotationのインスタンスを作成するのが非常に簡単な素晴らしいクラスjavax.enterprise.util.AnnotationLiteralが含まれています(特にテストに役立ちます)。AnnotationLiteralクラスのスタンドアロン版ですか?

私は自分のライブラリでutilクラスを使いたいと思っています。しかし、私の図書館はCDIとは関係がないので、私は他のすべてのCDIを持っていたいとは思わない。 幸いにも、AnnotationLiteralは標準のJavaクラス以外のクラスを使用しないため、一般的に可能です。 AnnotationLiteralを含む最小のライブラリ今まで

はある公式CDI-API

<dependency> 
    <groupId>javax.enterprise</groupId> 
    <artifactId>cdi-api</artifactId> 
    <version>1.0</version> 
</dependency> 

しかし、私は(Mavenの除外で)すべての依存関係を遮断した場合でも、jarファイルは、他のCDI-APIの多くが含まれていますと-SPIのもの。

私の質問は:クラスのみを含む(多かれ少なかれ公式)(maven)ライブラリ、または少なくともそれほど多くの他のものはありませんか?

+0

+1、良い質問。 – Bozho

答えて

1

ライセンスに準拠している限り、sourceをプロジェクトにコピーすることができます。

これが可能であれば、私は最終的にプロジェクトの依存関係になります。私がパッケージを変更する唯一の理由は、あなたがソースを変更することになった場合です。もちろん、ライセンスを削除することはできません。

1

AnnotationLiteralのApacheライセンスバージョンは、geronimo apiにあります。それはCDIの他の部分に依存しているようには見えません。あなたがテストで提供するequalsおよびhashCode実装が不要な場合は、アノテーションインタフェースを直接実装することさえできます。これは本当に良いスタイルではありませんが、間違いなく可能です。 CDIには、Qualifierロジックのための追加のequalsおよびhashCode実装が必要です。ここでは、jsf ManagedBean注釈を使用した例を示します。

+0

私は注釈クラスをインスタンス化する正しいアプローチを探していましたが、これは私にとっては完璧な答えです。これはまた、元の質問に正解を与えます。 –

関連する問題