1 java dependency-injection cdi
简单的问题,但我无法解决它.据我所知,首先初始化字段,然后调用构造函数.
以下代码
public class Controller {
@Inject
private ReadCommand readCommand;
public Controller() {
if (readCommand==null){
System.out.println("NO");
}else{
System.out.println("YES");
}
}
}
Run Code Online (Sandbox Code Playgroud)
打印NO.但是当我注入构造函数时
@Inject
public Controller(ReadCommand readCommand)
Run Code Online (Sandbox Code Playgroud)
它打印YES.我究竟做错了什么?
你没有做错任何事.在注入过程中多次调用构造函数.只有在构造完成后,才会将字段注入托管bean.当你进行构造函数级注入时,你的构造函数需要读取:
private ReadCommand readCommand;
@Inject
public Controller(ReadCommand readCommand) {
this.readCommand = readCommand;
if(this.readCommand == null) {
...
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1129 次 |
| 最近记录: |