简单的问题,但我解决不了。据我所知,首先初始化字段,然后再调用该构造函数。
以下代码
public class Controller {
@Inject
private ReadCommand readCommand;
public Controller() {
if (readCommand==null){
System.out.println("NO");
}else{
System.out.println("YES");
}
}
}
打印编号但是当我注入构造函数
@Inject
public Controller(ReadCommand readCommand)
它打印是。我究竟做错了什么?
最佳答案
你没做错什么在注入过程中,构造函数被多次调用。仅在构造完字段之后,才将字段注入到托管bean中。在进行构造函数级注入时,构造函数需要读取:
private ReadCommand readCommand;
@Inject
public Controller(ReadCommand readCommand) {
this.readCommand = readCommand;
if(this.readCommand == null) {
...
}
}
关于java - CDI注入(inject)顺序和构造方法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24248449/