我有这个 Spring 配置:
<bean id="boo" class="com.x.TheClass"/>
TheClass
类实现 TheInterface
。然后我有这个(假设的)Java代码:
@Autowired
TheInterface x;
@Autowired
TheClass y;
TheInterface
的 Autowiring 有效,但 TheClass
的 Autowiring 失败。 Spring 为该类提供了一个 NoSuchBeanDefinitionException
。
为什么你可以连接接口(interface)而不是类?
最佳答案
通常,两者都可以,您可以 Autowiring 接口(interface)或类。
在您的上下文中可能有一个自动代理生成器,它将您的 boo
bean 包装在生成的代理对象中。此代理对象将实现 TheInterface
,但不会是 TheClass
。使用自动代理时,您需要对接口(interface)进行编程,而不是对实现进行编程。
可能的候选者是事务代理 - 您使用的是 Spring 事务、使用 AspectJ 还是 @Transactional
?
关于java - Spring Autowiring 类与接口(interface)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2387431/