CDI 适用于常规 Java 应用程序吗?

2024-03-03

我有一个简单的 Maven 项目,包含三个类。在我的META-INF我有我的空beans.xml。每次我运行我的Main.java我得到一个NullPointerException.

Exception in thread "main" java.lang.NullPointerException
at hom.World.helloWorld(World.java:12)
at hom.Main.main(Main.java:6)

我想要完成的事情是否超出了 CDI 应该做的范围?

你好.java

package hom;
import javax.enterprise.inject.Default;

@Default
public class Hello {
   public String hello() {
      return "Hello ";
   }
}

世界.java

package hom;
import javax.enterprise.inject.Default;
import javax.inject.Inject;

@Default
public class World {
   @Inject
   Hello hello;

   public String helloWorld() {
      return hello.hello() + "World!";
   }
}

主程序.java

package hom;
public class Main {
   public static void main(String[] args) {
      World helloWorld = new World();
      System.out.println(helloWord.helloWorld());
   }
}

可以在独立应用程序中使用 CDI。

Weld weld = new Weld();
WeldContainer container = weld.initialize();
World helloWorld = container.instance().select(World.class).get();
System.out.println(helloWorld.helloWorld());
weld.shutdown();

您还需要weld-se 依赖项。

<dependency>
    <groupId>org.jboss.weld.se</groupId>
    <artifactId>weld-se-core</artifactId>
    <version>2.2.4.Final</version>
</dependency>

也可以看看焊接文档 https://docs.jboss.org/weld/reference/latest/en-US/html/environments.html#_java_se就此主题而言。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

CDI 适用于常规 Java 应用程序吗? 的相关文章

随机推荐