Я новичок в Spring и концепции bean, поэтому извините, если спрашиваю об этом.Я настроил проект Java и использовал инфраструктуру Hibernate для подключения к БД (используя утилиту hibernate на eclipse, очень рекомендую, кстати).Моя основная настройка была следующей:
- некоторые гибернационные pojos (генерируемые инструментами Hibernate),
- файлы отображения гибернации (файлы hbm.xml).
- Конфигурация была задана в файле hibernate.cfg.xml, расположенном в моем корне пакетов.
- Я изначально настроил класс HibernateUtils, который получает сеанс из моего sessionFactory.
- некоторые классы, которые действуют как Dao - создают запросы, используя pojos и hibernateUtils для получения сеанса.
Это работало нормально с мощной инфраструктурой hibernate.Затем я перешел на проект в Spring MVC.Из различных учебных пособий, которые я прочитал, я понял, что необходимо внести некоторые изменения, чтобы все снова заработало.Основное изменение заключается в том, что Spring FW теперь загружает компоненты самостоятельно, поэтому следующее:
- pojos не изменилось, равно как и файлы hbm.xml
- Конфигурациябольше не устанавливается в hibernate.cfg.xml - Spring MVC FW загружает свой собственный LocalSessionFactoryBean, как только я объявил его в файлах XML (Spring выполняет поиск xmls как часть процесса инициализации).Поэтому я создал отдельный XML-файл с именем spring-hibernate.xml, в котором есть определение базы данных, фабричный компонент сеанса и шаблон спящего режима.Для этого в xml-файле также объявляется местоположение файлов Dao и hbm.
- с шаблоном гибернации, настроенным в xml, есть внедрение bean-компонента, поэтому я изменил файлы Dao, добавив getter / setterв спящий свойство шаблона.Затем с помощью этого - класс Dao может создать запрос БД.
Вся эта конфигурация работает нормально, и я могу заставить Spring FW инициализировать классы Dao (я поставил sysout только для того, чтобы подтвердить, что классы Dao внедряются с шаблоном гибернации во время запуска MVC).Теперь моя проблема - как получить доступ к созданному экземпляру бина Dao?
В моей логической части я держу бин следующим образом:
ClassPathXmlApplicationContext appContex = new ClassPathXmlApplicationContext(new String[] {"spring-hibernate.xml"});</p>
<p>UserUIDDao userUIDDao= (UserUIDDao)appContext.getBean("UserUIDDao");
Проблема в том, что это НОВАЯ ссылка на недавно созданный бин ине тот, который был создан во время весеннего запуска MVC.
Итак, мои вопросы: как получить исходный бин, созданный процессом инициализации Spring?и - мои настройки правильные?