2011-07-22 59 views
3

据我所知,依赖注入的主要目的是使所有的依赖关系以声明方式分开,这样我们就可以轻松地轻松查看和更改依赖关系结构......对吗?Spring注解基本问题

然后通过使用遍历代码的依赖注释,我们不是回到非集中式系统(类似于简单的新运算符),这很难调整吗?

回答

2

@Autowired/@Inject注释通常在接口而不是对具体类(如在new的情况下)声明依赖,从而仍然可以控制哪些实现应该通过控制豆在上下文被声明被注入。另外,这些依赖关系可以手动重写。

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

+0

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

0

依赖注入的目的是将依赖声明与实际满足这些依赖关系分开。宣言如何完成是一个正交的问题。

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

0

这些类型的讨论倾向于成为宗教信仰,所以我将避开“主要目的”定义以及这种或那种模式是否真正实现的语义。

我尝试将它看作一种可以提供某些功能的工具。例如,使用Spring(DI)是分离接口和实现的好方法。特定接口的用户不需要知道如何创建实现(或其驻留的位置)。这通常是很好的。使用Spring还可以实现许多其他功能:AOP和AOP驱动的功能,如事务处理,范围设置以及与其他框架和技术的大量预构建集成。注释可以使这些操作变得更加简单和清晰,并且最重要的是,我不必在不实际或不可行的地方使用它们 - 总是可以选择使用XML来配置它。