尝试访问Injected Bean

时间:2017-08-06 10:01:10

标签: java maven code-injection

我有一个maven多模块项目。当尝试访问注入的bean时,我得到Nullpointer异常。

这是启动应用程序的主要功能

public class App {

    public static void main(String[] args) {
        System.out.println("Startpoint");
        DecisionMaker decisionMaker = new DecisionMaker();
        decisionMaker.run();
    }
}

这就是我在DecisionMaker中所做的事情

public class DecisionMaker {

@Inject
GameListener gm;

@Inject
BasicProductionManager basicProductionManager;

public DecisionMaker() {
    System.out.println("this is the decisionmaker");
    System.out.println(gm.toString());
}

所以这不是一个bean而是一个普通的pojo

gamelistener是一个我想要注入的Applicationscoped bean。

@Named
@ApplicationScoped

public class GameListener extends DefaultBWListener {

@Inject
Event<OnFrameEvent> onFrameEvent;

public Mirror mirror = new Mirror();

public Game game;

public Player self;

@PostConstruct
public void init() {
    System.out.println("init listener");
}

nullpointer会在DecisionMaker的构造函数中抛出。 @PostConscrutct初始化方法未被调用

我调查了类似的问题,但我发现只需要我已经拥有的PostConstruct方法。

1 个答案:

答案 0 :(得分:1)

您无法自己实例化DecisionMaker。 CDI的重点是让它控制创建和管理bean。

查看此article,了解如何在JAVA SE中使用CDI。