与Spring和Mybatis的交易

时间:2015-03-06 16:18:37

标签: java spring spring-mvc transactions mybatis

我有这个mapper-config.xml。有游戏类的DAO和BLM:

<bean id="DAOGame" class="it.certimeter.nagima.dao.game.DAOGame">
    <property name="sqlSessionFactory" ref="sqlSessionFactory" />
</bean>

<bean id="BLMGameTarget" class="it.certimeter.nagima.blm.game.BLMGame">
    <property name="daoGame" ref="DAOGame" />
</bean>

交易的bean:

<bean class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean" id="BLMGame">
    <property name="proxyInterfaces">
        <list>
            <value>it.certimeter.nagima.blm.game.IBLMGame</value>
        </list>
    </property>
    <property name="transactionManager">
        <ref bean="transactionManager"/>
    </property>
    <property name="target">
        <ref bean="BLMGameTarget"/>
    </property>
    <property name="transactionAttributes">
        <props>
            <prop key="saveGame">PROPAGATION_REQUIRED, -it.fondsai.jeffs.core.exception.service.appl.JeffsServiceApplException</prop>
        </props>
    </property>
    <!-- <property name="anonymousAccess" value="true"/> -->
</bean>

但我有这个错误: 嵌套异常是org.springframework.beans.factory.NoUniqueBeanDefinitionException:没有定义类型[it.certimeter.nagima.blm.game.IBLMGame]的限定bean:预期的单个匹配bean但找到2:BLMGameTarget,BLMGame

我错在哪里?

1 个答案:

答案 0 :(得分:0)

是的,Ben评论的问题。我前几天就碰到了这个。

这个问题带来了糟糕的代码味道,但是如果你想要一个解决方法,我建议如下:

转到@Autowire您的IBLMGame实例的位置。除了@Autowire注释之外,您还可以提供@Qualifier注释并给出一个String值,该值表示您实际要连接的bean名称。

因此,对于您的情况,它看起来像这样:

@Autowired
@Qualifier("BLMGameTarget")  // you can substitute in "BLMGame" if that's the bean you want
IBLMGame iblmGame;