如何在普通 Java SE 环境中通过 CDI 启动使用 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");
}
}
这将注入(inject) Foo,但我想将整个应用程序打包到一个 jar 中,以供其他应用程序使用,而无需等待 Weld 实际开始运行。所以我基本上想要一种正确初始化 Weld 的方法。
最佳答案
Bootstrapping Weld SE 在 Weld 1.x 和 2.x 之间没有变化,请参阅 reference manual 。
只需确保导入org.jboss.weld.environment.se.Weld
,而不是新类org.jboss.weld.Weld
。
关于java - Bootstrap Weld 2.1.0 来自 void main,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20707346/