Spring注释的基本问题

Spring注释的基本问题,spring,annotations,Spring,Annotations,据我所知,依赖项注入的主要目的是以声明的方式分离所有依赖项,以便我们可以轻松地检查和更改依赖项结构……对吗 然后,通过使用贯穿代码的依赖性注释,我们不是回到了非集中系统(类似于简单的新操作符),这是很难调整的吗?@Autowired/@Inject注释通常声明对接口的依赖性,而不是对具体类的依赖性(与new的情况一样),因此您仍然可以通过控制上下文中声明的bean来控制应该注入哪些实现。此外,还可以手动覆盖这些依赖项 @Component-也可以控制族注释,因为您可以从组件扫描中排除特定类。依赖

据我所知,依赖项注入的主要目的是以声明的方式分离所有依赖项,以便我们可以轻松地检查和更改依赖项结构……对吗


然后,通过使用贯穿代码的依赖性注释,我们不是回到了非集中系统(类似于简单的新操作符),这是很难调整的吗?

@Autowired
/
@Inject
注释通常声明对接口的依赖性,而不是对具体类的依赖性(与
new
的情况一样),因此您仍然可以通过控制上下文中声明的bean来控制应该注入哪些实现。此外,还可以手动覆盖这些依赖项


@Component
-也可以控制族注释,因为您可以从组件扫描中排除特定类。

依赖项注入的目的是将依赖项的声明与这些依赖项的实际满足分离。如何进行声明是一个正交问题


@Autowired
是一种依赖项声明形式。使用
@Autowired
支持封装。类的注入依赖项直接记录在代码中,而不是另一个文件中。

这些类型的讨论倾向于宗教化,因此我将不再提及“主要目的”定义以及该模式或该模式是否真正实现的语义


我试着将其视为一种可以提供某些功能的工具。例如,使用Spring(DI)是一种分离接口和实现的好方法。特定接口的用户不需要知道如何创建实现(或它位于何处)。这通常是件好事。使用Spring还可以实现许多其他功能:AOP和AOP驱动的功能,如事务处理、作用域以及一系列与其他框架和技术的预构建集成。注释使这方面变得更容易、更清晰,最重要的是,我不必在不实用的地方使用它们或者可能-总是可以选择用XML来配置它。

可能我很笨,但我不完全相信。”…因此,您仍然可以通过控制在上下文中声明哪些bean来控制应该注入哪些实现”。与XML配置相比,它没有那么灵活。