@Inject 无参数 public 方法
@Inject on no-args public method
在查看一些代码时,我注意到一个 POJO(没有作用域 -> @Dependant)被注入 (@Inject) 到另一个 bean 中并且确实注入了一个 bean(一个字段)。
但它在无参数 public 方法上也有一个 @Inject 注释,该方法执行初始化操作。我认为注入点只发生在字段、构造函数和 setter
上
public class MyImpl implements MyInterface {
@Inject
private ParamDao paramDao;
private Map<String,List<MyRateDto>> params;
@Inject
public void loadRates() {
params = paramDao....;
}
...
}
对我来说,这个方法 (loadRates) 应该被注释为 @PostConstruct。但我想知道在这种情况下会发生什么?
我想这个方法只是在 bean 创建和字段注入之后被调用...但是我没有在规范或其他地方读到任何关于它的内容。
这是预期的行为吗?
环境:Java 8/JavaEE 7 以 JBoss EAP 7 为目标。
谢谢
感谢@Andreas,我被引导到了正确的方向。
查看 @Inject
的 Javadoc:“首先注入构造函数,然后是字段,然后是方法。superclasses 中的字段和方法在那些之前注入在 subclasses 中。未指定字段之间和同一 class 中的方法之间的注入顺序。--- 可注入方法 [...] 接受零个或多个依赖项作为参数。"
因此,没有对零参数的明确描述。但只是 @Inject
方法以任意顺序调用,并解析参数。
没有争论 = 没有什么可以解决的。
在查看一些代码时,我注意到一个 POJO(没有作用域 -> @Dependant)被注入 (@Inject) 到另一个 bean 中并且确实注入了一个 bean(一个字段)。 但它在无参数 public 方法上也有一个 @Inject 注释,该方法执行初始化操作。我认为注入点只发生在字段、构造函数和 setter
上public class MyImpl implements MyInterface {
@Inject
private ParamDao paramDao;
private Map<String,List<MyRateDto>> params;
@Inject
public void loadRates() {
params = paramDao....;
}
...
}
对我来说,这个方法 (loadRates) 应该被注释为 @PostConstruct。但我想知道在这种情况下会发生什么?
我想这个方法只是在 bean 创建和字段注入之后被调用...但是我没有在规范或其他地方读到任何关于它的内容。 这是预期的行为吗?
环境:Java 8/JavaEE 7 以 JBoss EAP 7 为目标。
谢谢
感谢@Andreas,我被引导到了正确的方向。
查看 @Inject
的 Javadoc:“首先注入构造函数,然后是字段,然后是方法。superclasses 中的字段和方法在那些之前注入在 subclasses 中。未指定字段之间和同一 class 中的方法之间的注入顺序。--- 可注入方法 [...] 接受零个或多个依赖项作为参数。"
因此,没有对零参数的明确描述。但只是 @Inject
方法以任意顺序调用,并解析参数。
没有争论 = 没有什么可以解决的。