43

我有这个 Spring 配置:

<bean id="boo" class="com.x.TheClass"/>

该类TheClass实现TheInterface. 然后我有这个(假设的)Java代码:

@Autowired
TheInterface x;

@Autowired
TheClass y;

作品的自动装配,TheInterface但自动装配TheClass失败。春天给了我一NoSuchBeanDefinitionException堂课。

为什么你可以连接接口而不是类?

4

1 回答 1

56

通常,两者都可以工作,您可以自动装配接口或类。

在您的上下文中可能有一个自动代理生成器,它将您的boobean 包装在生成的代理对象中。此代理对象将实现TheInterface,但不会是TheClass. 使用自动代理时,您需要对接口进行编程,而不是对实现进行编程。

可能的候选人是事务代理 - 您使用的是 Spring 事务、使用 AspectJ 还是@Transactional

于 2010-03-05T14:51:48.883 回答