弹簧自动布线类与接口?

我有这个弹簧配置:

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

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

@Autowired
TheInterface x;

@Autowired
TheClass y;

自动布线工作,但自动布线失败。春天给了我一个班级。TheInterfaceTheClassNoSuchBeanDefinitionException

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


答案 1

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

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

可能的候选者是事务代理 - 您使用的是Spring事务,使用AspectJ还是?@Transactional


答案 2

推荐