@Autowired和TransactionProxyFactoryBean?

时间:2009-08-14 22:26:30

标签: java spring

我有一个用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对象,而不是我的事务拦截器。我做错了什么?

2 个答案:

答案 0 :(得分:1)

可能会混淆要注入哪个bean ...在bean引用中添加一个限定符,您可以使用该引用指定您希望注入的确切bean ID。

类似的东西:

@Qualifier("stuffRepository")
@Autowired Repository repository;

答案 1 :(得分:1)

最可能的解释是TransactionProxyFactoryBean创建的bean没有实现Repository

只需检查,但Repository 是一个界面,对吗?

要尝试的另一件事是使用stuffRepositoryTarget标记autowire-candidate="false",这样可以防止意外自动连接。