我有一个看起来像这样的bean:
@Component
@Scope("session")
public class AlarmChartSettingsBean implements Serializable {
...
在这个bean里面我注入了另一个这样的bean:
@Inject
private SessionInfoBean sessionInfoBean;
然后我在第一个bean的构造函数中调用注入的bean,如下所示:
public AlarmChartSettingsBean() {
String atcaIp = sessionInfoBean.getNwConfigBean().getAtcaIP();
}
问题是注入的bean为null。所以问题是那个豆注入的时间是什么时候?我可以在构造函数中使用它,或者我应该在构造bean之后使用它吗?
答案 0 :(得分:3)
在Spring有机会自动装配任何字段之前调用Spring bean的构造函数。这解释了为什么@PostConstruct
public void init() {
String atcaIp = sessionInfoBean.getNwConfigBean().getAtcaIP();
}
在构造函数中是afterPropertiesSet
。
如果要初始化Spring bean,可以:
使用flow content注释方法:
public class AlarmChartSettingsBean implements Serializable, InitializingBean {
@Override
void afterPropertiesSet() {
String atcaIp = sessionInfoBean.getNwConfigBean().getAtcaIP();
}
}
实现@PostConstruct
并在t2 = t[:2] + (t[2] + 1,) + t[3:]
方法中编写初始化代码:
origin
答案 1 :(得分:1)
在调用构造函数后,Field上的@Inject
将自动装配。
注意:在某些Spring-Apps中,@Inject
可能无效,请改用@Autowire
。