Spring框架

2.10 自动装配

2.10.1 自动装配的概念

  • 手动装配:以value或ref的方式明确指定属性值都是手动装配。
  • 自动装配:根据指定的装配规则,不需要明确指定,Spring自动将匹配的属性值注入bean中。

2.10.2 装配模式

  • 根据类型自动装配:将类型匹配的bean作为属性注入到另一个bean中。若IOC容器中有多个与目标bean类型一致的bean,Spring将无法判定哪个bean最合适该属性,所以不能执行自动装配
  • 根据名称自动装配:必须将目标bean的名称和属性名设置的完全相同
  • 通过构造器自动装配:当bean中存在多个构造器时,此种自动装配方式将会很复杂。不推荐使用。

2.10.3 选用建议

相对于使用注解的方式实现的自动装配,在XML文档中进行的自动装配略显笨拙,在项目中更多的使用注解的方式实现。

2.11 通过注解配置bean

2.11.1 概述

相对于XML方式而言,通过注解的方式配置bean更加简洁和优雅,而且和MVC组件化开发的理念十分契合,是开发中常用的使用方式。

2.11.2 使用注解标识组件

  • 普通组件:@Component

标识一个受Spring IOC容器管理的组件

  • 持久化层组件:@Repository

标识一个受Spring IOC容器管理的持久化层组件

  • 业务逻辑层组件:@Service

标识一个受Spring IOC容器管理的业务逻辑层组件

  • 表述层控制器组件:@Controller

标识一个受Spring IOC容器管理的表述层控制器组件

  • 组件命名规则

①默认情况:使用组件的简单类名首字母小写后得到的字符串作为bean的id

②使用组件注解的value属性指定bean的id

注意:事实上Spring并没有能力识别一个组件到底是不是它所标记的类型,即使将 @Respository注解用在一个表述层控制器组件上面也不会产生任何错误,所以 @Respository、@Service、@Controller这几个注解仅仅是为了让开发人员自己明确 当前的组件扮演的角色。