自动装配与弹簧依赖注入冲突

时间:2016-06-23 09:42:46

标签: java spring

我对自动装配和弹簧依赖注入感到有点困惑。

spring dependency injection使您可以删除任何特定的依赖项 一个类可能在其他类或第三方接口上,并在构造时将这些依赖项加载到类中。

但是在使用Autowired注释时,我们以编程方式在java类中编写接口名称或类名来注入bean。

@Autowired
public final Interface object;

这与弹簧依赖注入没有冲突吗?因为如果我们在XML中定义bean,我们可以随时更改它而无需更改实际的java代码。但是使用注释我们必须改变java代码。

1 个答案:

答案 0 :(得分:0)

在依赖注入中Spring在类中至少需要一个契约(Java接口),您可以使用XML或Java Based注释在运行时动态切换实现。即使它是通过XML完成的,我们也需要为接口提供构造函数,因此bean的布线自动也需要接口类变量。

但正如你所说,要放置基于Java的Annotation,我们需要访问源代码,这是Annotation的一个主要缺点。这也适用于AOP。要使类成为Aspect,您需要具有源代码访问权限。