私はJavaでの依存性注入の例に取り組んでおり、ほとんどのドキュメントでは、空にする必要があることが強調されていますbeans.xml
。
そのため、warタイプのパッケージを使用していますが、アプリケーションbeans.xml
はMETA-INFフォルダーに配置した場合にのみ機能します。なぜそれがそのように機能しているのかについて少し混乱していますか?WARファイルをJBOSS / WildFlyコンテナーにデプロイします。
これが私の単純なpom.xmlです
Beans.xmlはにあります src/main/resources/META-INF
また、ここでは、Beanの注入にのみ使用したアノテーションを確認できます。
AutoService.java
public interface AutoService {
void getService();
}
BMWAutoService.java
@Named("bmwAutoService")
public class BMWAutoService implements AutoService{
@Override
public void getService() {
System.out.println("You chose BMW auto service");
}
}
AutoServiceCaller.java
@Named
public class AutoServiceCallerImp implements AutoServiceCaller{
private AutoService bmwAutoService;
@Inject
public AutoServiceCallerImp(@Named("bmwAutoService") AutoService bmwAutoService) {
this.bmwAutoService = bmwAutoService;
}
@Override
public void callAutoService() {
// get bmw's auto service
bmwAutoService.getService();
}
}
注釈を使用している場所によって異なります。あなたのWebモジュールにEJB Beanを持っており、これらのBean内注射を使用している場合は、持っている必要がありますbeans.xml
でMETA-INF
、それは純粋なEJBモジュールの場合になりますよう。Webコンポーネント(サーボレット、フィルター、JSF Bean)でCDIインジェクションを使用している場合は、にそれを含める必要がありますWEB-INF
。また、両方の場所で必要になる場合があります(両方の種類のコンポーネントから使用する場合)。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加