CDI是否适用于常规Java应用程序? [英] Does CDI work for regular Java application?
本文介绍了CDI是否适用于常规Java应用程序?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有三个类的简单maven项目。在我的 META-INF
中,我有空的 beans.xml
。每次我运行我的 Main.java
我得到一个 NullPointerException
。
I have simple maven project with three classes. In my META-INF
I have my empty beans.xml
. Everytime I run my Main.java
I get a NullPointerException
.
Exception in thread "main" java.lang.NullPointerException
at hom.World.helloWorld(World.java:12)
at hom.Main.main(Main.java:6)
我想要完成的是超出范围CDI应该做什么?
Is what I'm trying to accomplish is way out of scope of what CDI is suppose to do?
Hello.java
Hello.java
package hom;
import javax.enterprise.inject.Default;
@Default
public class Hello {
public String hello() {
return "Hello ";
}
}
World.java
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!";
}
}
Main.java
Main.java
package hom;
public class Main {
public static void main(String[] args) {
World helloWorld = new World();
System.out.println(helloWord.helloWorld());
}
}
推荐答案
它可以在独立应用程序中使用CDI。
It is possible to use CDI in a standalone application.
Weld weld = new Weld();
WeldContainer container = weld.initialize();
World helloWorld = container.instance().select(World.class).get();
System.out.println(helloWorld.helloWorld());
weld.shutdown();
您还需要焊接依赖。
<dependency>
<groupId>org.jboss.weld.se</groupId>
<artifactId>weld-se-core</artifactId>
<version>2.2.4.Final</version>
</dependency>
参见焊接文档。
这篇关于CDI是否适用于常规Java应用程序?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文