java - 带有桌面应用程序的 CDI

标签 java cdi desktop-application

有一些使用 CDI 的业务逻辑(@javax.inject.Inject 和@javax.persistence.PersistenceUnit)。想要在 desctop 应用程序中重用它。

将 beans.xml 添加到 META-INF 文件夹中。将 Java 7 设置为默认值。编写了简单的类:

public class Main {

       @Inject
       private static AggregatedUserQueries aggregatedUserQueries;

       public static void main(String[] args) {
             System.out.println(aggregatedUserQueries);
       }
}

当然它会向控制台打印“null”。有什么方法可以将 CDI 与 desctop 应用程序一起使用吗?

最佳答案

@Boris Pavlović 所述,您可以引导 Weld 并以编程方式获取 bean。但是,也可以使注入(inject)工作。您需要在桌面应用程序中定义启动方法,这将“替换”您的 public static void main(String ... args)。考虑:

public class Main {

    @Inject
    private Bean bean;

    public void startup(@Observes ContainerInitialized event) {
        this.bean.sayHello();
    }
}

这个 startup() 方法将在 Weld 启动时被调用。您可以通过将 org.jboss.weld.environment.se.StartMain 作为主类执行来实现它。

关于java - 带有桌面应用程序的 CDI,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30590442/

相关文章:

sql-server - 为什么要在桌面应用程序中关闭数据库连接

java - 如何在按钮切换组中调整按钮大小

java - 使用 imagemagick 检测轮廓

java - Android 网络未添加到 Wifi 列表

deployment - JBoss 7 上的 Java EE 6 + CDI - 可以像在 Seam 中那样进行热部署吗?

.net - Silverlight 浏览器应用程序到桌面应用程序

java - 用于验证内置 XSD 类型的正则表达式或库?

EJB 3.1 有状态和 CDI 范围对话

java - 通用 CDI 生产者方法未按预期工作

razor - 将 ASP MVC Web 应用程序作为桌面应用程序运行