1

如何使用 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 的方法。

4

1 回答 1

1

Bootstrapping Weld SE 在 Weld 1.x 和 2.x 之间没有变化,请参阅参考手册

只要确保导入org.jboss.weld.environment.se.Weld,而不是新类org.jboss.weld.Weld

于 2013-12-20T18:50:21.837 回答