我有一个用XML创建的存储库类,如下所示:
<bean id="stuffRepositoryTarget" class="my.stuff.RepositoryImpl">
<!-- some params -->
</bean>
<bean id="stuffRepository" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean" primary="true">
<property name="target" ref="stuffRepositoryTarget" />
<property name="transactionAttributes">
<prop key="*">PROPAGATION_REQUIRED</prop>
</property>
</bean>
然后我有一个使用存储库的类:
@Autowired Repository repository;
@Autowired注释似乎是指我的Impl对象,而不是我的事务拦截器。我做错了什么?
答案 0 :(得分:1)
可能会混淆要注入哪个bean ...在bean引用中添加一个限定符,您可以使用该引用指定您希望注入的确切bean ID。
类似的东西:
@Qualifier("stuffRepository")
@Autowired Repository repository;
答案 1 :(得分:1)
最可能的解释是TransactionProxyFactoryBean
创建的bean没有实现Repository
。
只需检查,但Repository
是一个界面,对吗?
要尝试的另一件事是使用stuffRepositoryTarget
标记autowire-candidate="false"
,这样可以防止意外自动连接。