如何使用 CDI 在普通 Java SE 环境中启动使用 Weld 的应用程序,它只是从命令行启动并且在后台没有 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 的方法。