CDI是否适用于常规Java应用程序?

HDo*_*oan 8 java cdi

我有三个类的简单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)
Run Code Online (Sandbox Code Playgroud)

我想要完成的是否超出CDI的范围?

Hello.java

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

@Default
public class Hello {
   public String hello() {
      return "Hello ";
   }
}
Run Code Online (Sandbox Code Playgroud)

World.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!";
   }
}
Run Code Online (Sandbox Code Playgroud)

Main.java

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

小智 10

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

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

您还需要焊接依赖性.

<dependency>
    <groupId>org.jboss.weld.se</groupId>
    <artifactId>weld-se-core</artifactId>
    <version>2.2.4.Final</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)

另请参阅有关该主题的焊接文档.