【问题标题】:Bootstrap Weld 2.1.0 from void main来自 void main 的 Bootstrap Weld 2.1.0
【发布时间】:2013-12-20 15:51:59
【问题描述】:

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

【问题讨论】:

    标签: java dependency-injection cdi bootstrapping weld


    【解决方案1】:

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

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

    【讨论】:

    • 谢谢。我使用从 Netbeans 自动导入,但没有检查我的导入。
    猜你喜欢
    • 2018-03-16
    • 2012-03-10
    • 2016-01-05
    • 1970-01-01
    • 2011-05-07
    • 2020-07-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多