ввести бин без гражданства в синглтон - PullRequest
0 голосов
/ 25 января 2012

У меня есть это требование: у меня есть одноэлементный компонент, и у меня есть метод, аннотированный @PostConstruct, где я выполняю некоторую инициализацию. Одной из инициализаций является чтение некоторых значений из БД, поэтому я хочу внедрить в этот метод компонент без состояния, который является служебным компонентом, который обращается к БД. Я не хочу внедрять компонент без состояния в качестве поля в одноэлементном компоненте, потому что он необходим только в этом методе (больше нигде в одноэлементном компоненте). Для этого я написал это в синглтон-бине:

@Singleton
public class MySingletonBean {

    @PostConstruct
    @EJB
    public void init(SLSBService service) { /* use service to read from DB */ };
    ...
}

Проблема в том, что компонент Singleton не может быть создан. Любая идея? Заранее спасибо.

1 Ответ

1 голос
/ 27 января 2012

Поскольку аннотированный (обратный вызов) метод @PostConstruct фактически вызывается после того, как все ссылки разрешены (все бины введены), я не думаю, что эта конструкция работает.

Что вы можете сделать или попробовать, так это удалить @PostConstruct и использовать обычную инъекцию сеттера.Тем не менее, имейте в виду, что другие внедренные ресурсы не обязательно были разрешены в это время.Конструкция должна использоваться для DAO, так как метод выполняется внутри транзакции, а также EntityManager (внутри SLBService) вводится правильно.И поскольку ожидаемые ссылки на другие EJB еще не разрешены, так что имейте это в виду.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...