1

2 つのトランザクション マネージャー (1 つは READ 要求用、もう 1 つは READ-WRITE 要求用) と 2 つのセッション ファクトリを作成しました。

重要なスニペットは次のとおりです。

<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を作成しようとしている瞬間:

<bean id="configurationDAO" class="com.amazon.im.dao.hibernate.ConfigurationDAOImpl">
  <property name="sessionFactory" ref="SessionFactory" />
</bean>

BeanCreationException次のエラー メッセージが表示されます。

org.springframework.beans.factory.BeanCreationException: 'configurationDAO' という名前の Bean の作成中にエラーが発生しました: 自動配線された依存関係の注入に失敗しました。ネストされた例外は org.springframework.beans.factory.BeanCreationException: Could not autowire field: public org.hibernate.SessionFactory com.amazon.im.dao.hibernate.GenericDAOImpl.sessionFactory; です。ネストされた例外は org.springframework.beans.factory.NoSuchBeanDefinitionException: タイプ [org.hibernate.SessionFactory] ​​の一意の Bean が定義されていません: 単一の一致する Bean が予想されますが、2 が見つかりました: [SessionFactory, SessionFactory1]

LocalSessionFactoryBean「annotatedClasses」プロパティを使いたいので使えません。

なぜそれが起こっているのかについての指針はありますか?私の側に欠けているものはありますか?

4

2 に答える 2

2

あなたのクラスのsessionFactoryプロパティ(のスーパークラスだと思いますか?)に注釈が付けられているように見えます。選択できるセッション ファクトリが 2 つあるため、これは機能しません。また、 を使用して正しいセッション ファクトリを手動で挿入しているため、は必要ありません。GenericDAOImplConfigurationDAOImpl@Autowired<property>@Autowired

于 2012-01-05T12:23:59.897 に答える
0

また、Spring 定義の「byType」の autowire と default-autowire を確認してください。どこかで autowire が発生している可能性があります。

于 2012-01-05T12:36:55.607 に答える