CDI アノテーション付き Bean を宣言する jar に関する問題があり、Spring コンテキストと EE6 コンテキストの両方で使用されます。
この jar には、たとえばservice.jar
、修飾子で注釈が付けられたクラスが含まれており (では、Bean を識別するため@Qualifier
などに独自の注釈を宣言できます)、 で注釈が付けられたプライベート メンバーがあります。@DataAccessObject
@Inject
これらのクラスは EE6 コンテキスト内にデプロイされた場合にのみ必要になるため、Maven でコンパイルされ、 への依存関係javax.javaee-api
が as として宣言されます。provided
とはいえ、わからないことがあります。このservice.jar
では、一度コンパイルすると、EE6 コンテキストでデプロイするかどうかに関係なく、バイトコードは などのクラスを参照しますjavax.inject.@Inject
。
では、クラスパスに jarがない私の spring アプリケーションがjavax.javaee-api
、構成を正しくロードして実行できるのはなぜですか? @Inject
Spring が(JSR 330) アノテーションをサポートしていることを知ったとき、私はさらに混乱しました。
誰かが私にそれを教えてもらえますか?
ありがとう。