来自void main的Bootstrap Weld 2.1.0

时间:2013-12-20 15:51:59

标签: java dependency-injection cdi bootstrapping weld

如何在普通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,但我想将整个Application打包到一个jar中,供其他应用程序使用,而不需要等待Weld实际开始运行。所以我基本上想要一种正确初始化Weld的方法。

1 个答案:

答案 0 :(得分:1)

Bootdpping Weld SE在Weld 1.x和2.x之间没有变化,请参阅reference manual

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