Я создал два менеджера транзакций (один для запросов READ и другой для запросов READ-WRITE) и две фабрики сеансов для одного и того же.
Важные фрагменты:
<tx:annotation-driven />
<bean id="txManager"
class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory" ref="SessionFactory" />
</bean>
<bean id="txManagerRead"
class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory" ref="SessionFactory" />
<qualifier value="READ"/>
</bean>
<bean id="txManagerWrite"
class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory" ref="Session1" />
<qualifier value="WRITE"/>
</bean>
<bean id="AbstractSessionFactory"
class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean"
abstract="true">
<property name="annotatedClasses">
<list>
.....
....
</list>
</property>
<property name="exposeTransactionAwareSessionFactory">
<value>true</value>
</property>
</bean>
<bean id="SessionFactory"
class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean"
parent="AbstractSessionFactory">
<property name="hibernateProperties">
<props>
.........
.........
</props>
</property>
</bean>
<bean id="SessionFactory1"
class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean"
parent="AbstractSessionFactory">
<property name="hibernateProperties">
<props>
.........
.........
</props>
</property>
</bean>
В тот момент, когда я пытаюсь создать компонент для DAO, например:
<bean id="configurationDAO" class="com.amazon.im.dao.hibernate.ConfigurationDAOImpl">
<property name="sessionFactory" ref="SessionFactory" />
</bean>
Я получаю BeanCreationException
со следующим сообщением об ошибке:
org.springframework.beans.factory.BeanCreationException: Ошибка при создании компонента с именем 'configurationDAO': сбой внедрения зависимостей с автопроводкой; вложенным исключением является org.springframework.beans.factory.BeanCreationException: не удалось автоматически связать поле: public org.hibernate.SessionFactory com.amazon.im.dao.hibernate.GenericDAOImpl.sessionFactory; вложенным исключением является org.springframework.beans.factory.NoSuchBeanDefinitionException: не определен уникальный бин типа [org.hibernate.SessionFactory]: ожидается один соответствующий бин, но найден 2: [SessionFactory, SessionFactory1]
Я не могу использовать LocalSessionFactoryBean
, потому что я хочу использовать свойство annotatedClasses.
Есть какие-нибудь указатели на то, почему это происходит?
Чего не хватает с моей стороны?