3

私はJavaでの依存性注入の例に取り組んでおり、ほとんどのドキュメントは空を入れなければならないことを強調していbeans.xmlます

  • jar アプリケーションの場合は META-INF
  • Web アプリケーションの場合は WEB-INF

そのため、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();
    }
}
4

1 に答える 1

3

注釈を使用している場所によって異なります。Web モジュールに EJB Bean があり、これらの Bean でインジェクションを使用している場合は、純粋な ejb モジュールの場合と同様に、 を に含めるbeans.xml必要があります。META-INFWeb コンポーネント (サーブレット、フィルター、JSF Bean) で CDI インジェクションを使用している場合は、WEB-INF. 両方の場所でそれらが必要になる場合もあります (両方の種類のコンポーネントから使用される場合)。

于 2014-12-29T14:18:11.457 に答える