В сварном шве как инициализировать объект до его ввода
У меня есть простой класс POJO, который я использую во многих местах. Для него нет явного производителя. я просто делаю @Inject POJO mypojo
и это прекрасно работает.
Теперь моя проблема заключается в том, что я хочу инициализировать объект POJO (который включает чтение из источника данных) до его внедрения в другие места. Сам источник данных вводится как @Resource(name = "jdbc/xx") DataSource ds;
в POJO. Теперь в конструкторе моего POJO, ds
имеет значение null, вводится только после завершения конструктора.
Могу ли я получить хук после создания объекта и перед внедрением, чтобы я мог инициализировать свой объект до внедрения?
1 ответ
Это то, что @PostConstruct
аннотация для. Он вызывается после того, как ваш компонент создается контейнером 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