Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: Общие вопросы > Когда происходит инжекция по @Autowired?


Автор: isabsent 27.6.2011, 16:50
Есть DAO
Код

    ...
    @Autowired
    private SessionFactory sessionFactory;    
    
    private Session getSession() {
        return getSessionFactory().getCurrentSession();
    ...

Есть сервис,  оборачивающий методы DAO в транзакции
Код

     ...
    @Autowired        
     DAO dao
     ...

и в таком варианте всё работает - вопросов не возникает. Но когда я пытаюсь взять нужный для создания сервиса репозиторий не используя @Autowired, а создаю его в нужный момент времени, вызывая в сервисе
Код

     ...
     new DAO();
     ...

то получаю ошибку   - sessionFactory не инициализировалась. Получается, что IoC-контейнер может инжектировать по @Autowired в DAO  нужный бин SessionFactory только в момент, когда происходит инициализация контейнера? А позже уже никак? Или я всё-таки что-то неправильно делаю?

Автор: danilych 27.6.2011, 17:32
Вы создаете свой объект в обход контейнера Ioc, соответственно и инжекции прописанные в нем для вашего объекта не срабатывают, если будете создавать свой ДАО извлекая его из контейнера, то и все зависимости проинжектятся, а так sessionFactory нужно самому создавать и инжектить в объект

Автор: isabsent 27.6.2011, 17:45
Спасибо!

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)