【发布时间】:2016-06-23 09:42:46
【问题描述】:
我对自动装配和弹簧依赖注入有点困惑。
spring 依赖注入使您能够删除任何特定的依赖项 一个类可能有其他类或第三方接口,并在构造时将这些依赖加载到类中。
但是在使用Autowired注解的时候,我们是通过编程方式在java类中写入接口名或者类名来注入bean。
@Autowired
public final Interface object;
这不会和spring依赖注入冲突吗?因为如果我们在 XML 中定义 bean,我们可以随时更改它,而无需更改实际的 java 代码。但是使用注解我们必须改变java代码。
【问题讨论】:
-
“使您能够删除一个类可能对其他类或第三方接口具有的任何特定依赖项”:不。您删除了对具体实现的依赖项,这意味着它可以是您自动装配的任何子类型。与 XML 配置完全相同(唯一的区别是代码中缺少
@Autowired注释)。 -
@Autowired(技术上称为组件扫描)和旧式 XML 配置是相同的结果。所以你应该只使用一件事。明智地选择取决于您的应用程序类型。