В сварном шве как инициализировать объект до его ввода

У меня есть простой класс 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

Другие вопросы по тегам