我有一个简单的POJO类,我注入了许多地方。它没有明确的生产者。我只做@Inject POJO mypojo
而且效果很好。
现在我的问题是我想在注入到其他地方之前初始化POJO对象(涉及从数据源读取)。数据源本身在POJO中注入@Resource(name = "jdbc/xx") DataSource ds;
。
现在在我的POJO的构造函数中,ds
为null,它只在构造函数完成后注入。
在创建对象之后和注射之前是否有一个钩子,所以我可以在注射之前初始化我的对象?
答案 0 :(得分:2)
这是@PostConstruct
注释的用途。它是在您的bean由CDI容器构造之后但在实际投入使用之前调用的。例如:
public class POJO {
public Pojo() {
super();
}
@PostConstruct
protected void initialize() {
// initialization code here
}
}
文档:http://docs.oracle.com/javaee/6/api/javax/annotation/PostConstruct.html