春季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
?