java - Bootstrap Weld 2.1.0 来自 void main

标签 java dependency-injection cdi bootstrapping weld

如何在普通 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/

相关文章:

Java单例+内部类误读

java - 仅执行从 svn 到 maven 3 的最新代码更新

java - Spring Boot - 如何通过名称获取使用 @Service 注释的类

jpa - 如何使用 google guice 将服务注入(inject) hibernate.ejb.interceptor?

java - 使用 Maven 过滤器时 cdi 不工作

java - 如果要注入(inject)的实例具有最终类,如何使用 InjectMocks

java - CDI @inject 空指针

java - 如何获取所选文件和文件夹的实际大小?

运行maven package命令时java spring boot jar文件错误

java - 两个单独的 Maven 项目之间可以存在依赖关系吗?