通常の Java SE 環境で Weld を使用する CDI を使用してアプリケーションを開始するにはどうすればよいですか?この環境は、コマンド ラインから開始するだけで、バックグラウンドで Glassfish や Tomcat を使用していません。Weld 1.x を使用すると、次のようなことができます
public static void main(String[] args) {
final WeldContainer weld = new Weld().initialize();
service = weld.instance().select(MyService.class).get();
}
しかし、Weld 2.x には initialize() がありません。
私はこのようなことができます:
@ApplicationScoped
public class Main {
@Inject
Foo foo;
public void main(@Observes ContainerInitialized event) {
System.out.println("Starting application");
}
}
これにより Foo が注入されますが、アプリケーション全体を jar にパックして、Weld が実際に実行を開始するのを待つ必要のない他のアプリケーションで使用したいと考えています。したがって、基本的に Weld を適切に初期化する方法が必要です。