春季Autowiring类与界面?

我有这个springconfiguration:

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

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

 @Autowired TheInterface x; @Autowired TheClass y; 

TheInterface的自动TheInterface工作,但TheInterface的自动TheClass失败。 Spring给了我一个NoSuchBeanDefinitionException的类。

为什么你可以连接界面而不是class级?

通常情况下,两者都可以工作,您可以自动连接接口或类。

在你的上下文中可能有一个autoproxy生成器,它将你的boo bean包装在一个生成的代理对象中。 这个代理对象将实现TheInterface ,但不会是一个TheClass 。 使用autoproxies时,您需要编程到接口,而不是实现。

可能的候选人是事务性代理 – 您是使用Spring事务,使用AspectJ还是@Transactional