简单的问题,但我无法解决。据我所知,首先初始化字段,然后调用构造函数。
以下代码
public class Controller {
@Inject
private ReadCommand readCommand;
public Controller() {
if (readCommand==null){
System.out.println("NO");
}else{
System.out.println("YES");
}
}
}
打印NO。但是当我注入构造函数
时@Inject
public Controller(ReadCommand readCommand)
打印出YES。我做错了什么?
答案 0 :(得分:5)
你没有做错任何事。在注入过程中多次调用构造函数。只有在构建了字段后,才会将字段注入到托管bean中。进行构造函数级别注入时,构造函数需要读取:
private ReadCommand readCommand;
@Inject
public Controller(ReadCommand readCommand) {
this.readCommand = readCommand;
if(this.readCommand == null) {
...
}
}