《Spring实战4》第2章 装配Bean

第1部分 Spring的核心

第2章 装配Bean

  • 声明bean
  • 构造器注入和Setter方法注入
  • 装配bean
  • 控制bean的创建和销毁

在Spring中,对象无需自己查找或创建与其所关联的其他对象。相反,容器负责把需要相互协作的对象引用赋予各个对象。

创建应用对象之间协作关系的行为通常称为 装配(wiring),这也是 依赖注入(DI) 的本质。

2.1 Spring配置的可选方案

  • 在XML中进行显式配置。
  • 在Java中进行显式配置。
  • 隐式的bean发现机制和自动装配。

尽可能地使用自动配置的机制。显式配置越少越好。
使用类型安全并且比XML更加强大的JavaConfig。
只有当你想要使用便利的XML 命名空间,并且在JavaConfig中没有同样的实现时,才应该使用XML。

2.2 自动化装配bean

Spring从两个角度来实现自动化装配:

  • 组件扫描(component scanning):Spring会自动发现应用上下文中所创建的bean。
  • 自动装配(autowiring):Spring自动满足bean之间的依赖。

2.2.1 创建可被发现的bean

  • 使用@Component注解,将类标注为组件类,并告知Spring要为这个类创建bean。

在这里插入图片描述

  • 使用@ComponentScan注解启用组件扫描

在这里插入图片描述

  • 用Spring context命名空间的 < context:component-scan>元素,来用XML启用组件扫描

在这里插入图片描述
在这里插入图片描述

2.2.2 为组件的bean命名

  • Spring应用上下文中所有的bean都会给定一个ID,就是将类名的第一个字母变为小写。
  • 将期望的ID作为值传递给@Component注解。
    在这里插入图片描述
  • 使用Java依赖注入规范(Java Dependency Injection)中所提供 的@Named注解来为bean设置ID。
    在这里插入图片描述

2.2.3 设置组件扫描的基础包

  • 没有任何属性的@ComponentScan注解,会以配置类所在的包作为基础包来扫描组件。
  • 用以下方法设置一个基础包。
    在这里插入图片描述
    在这里插入图片描述
  • 用以下方法设置多个基础包。
    扫描soundsystem和video两个包:
    在这里插入图片描述
    扫描包含CDPlayer和DVDPlayer的包:
    在这里插入图片描述

2.2.4 通过为bean添加注解实现自动装配

  • 自动装配就是让Spring自动满足bean依赖的一种方法,在满足依赖的过程中,会在Spring应用上下文中寻找匹配某个bean需求的其他bean。
  • @Autowired注解,可以声明要进行自动装配
    1. 用在构造器上:
      在这里插入图片描述
    2. 用在setter方法上:
      在这里插入图片描述
    3. 用在类的任何方法上:
      在这里插入图片描述
  • 自动装配时:
    1. 没有过合适的bean,Spring会抛出一个异常
    2. 可以将@Autowired的required属性设置为false:,没有匹配的bean时,不会报错
      在这里插入图片描述
    3. 如果有多个bean都能满足依赖关系的话,Spring将会抛出一个异常
  • 可以用@Inject(Java依赖注入规范)注解代替@Autowired

2.2.5 验证自动装配

在这里插入图片描述

2.3 通过Java代码装配bean

当需要第三方库中的组件装配到你的应用中,无法使用@Component和@Autowired注解来实现自动装配的。要用显式装配:Java和XML。

2.3.1 创建配置类

在这里插入图片描述
创建JavaConfig类的关键在于为其添加@Configuration注解,@Configuration注解表明这个类是一个配置类,该类应该包含在Spring应 用上下文中如何创建bean的细节。

2.3.2 声明简单的bean

在这里插入图片描述
用@Bean注解来创建bean

2.3.3 借助JavaConfig实现注入

在这里插入图片描述

在这里插入图片描述

2.4 通过XML装配bean

在Spring刚出现时,XML时描述配置的主要方式

2.4.1 创建XML配置规范

  • 在使用XML时,需要在配置文件的顶部声明多个XML模式(XSD)文件,这些文件定义了配置Spring的XML元素。
    在这里插入图片描述
  • <beans>是所有Spring配置文件的根元素

2.4.2 声明一个简单的 <bean>

在这里插入图片描述

2.4.3 借助构造器注入初始化bean

构造器注入,有两种基本的配置方案可供选择:

  1. <constructor-arg>元素
  2. 使用Spring 3.0所引入的c-命名空间
  • 构造器注入bean引用

    1. <constructor-arg>元素
      在这里插入图片描述
    2. 使用Spring 3.0所引入的c-命名空间
      在这里插入图片描述
      在这里插入图片描述
      在这里插入图片描述
      在这里插入图片描述
  • 将字面量注入到构造器中
    在这里插入图片描述

    1. <constructor-arg>元素
      在这里插入图片描述
    2. 使用Spring 3.0所引入的c-命名空间
      在这里插入图片描述
      在这里插入图片描述
    • 装配集合
      在这里插入图片描述
    1. <constructor-arg>元素
      在这里插入图片描述
      在这里插入图片描述
      在这里插入图片描述
      在这里插入图片描述
      在这里插入图片描述

2.4.4 设置属性

  • 将bean引用注入属性
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

  • 将字面量注入到属性中
    在这里插入图片描述
    在这里插入图片描述

  • util- 命名空间
    在这里插入图片描述
    在这里插入图片描述

在这里插入图片描述

2.5 导入和混合配置

2.5.1 在JavaConfig中引用XML配置

  • @Import注解导入
    在这里插入图片描述
    在这里插入图片描述
  • @ImportResource注解
    在这里插入图片描述

2.5.2 在XML配置中引用JavaConfig

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.6 小结

  • Spring框架的核心是Spring容器。
    容器负责管理应用中组件的生命周期,它会创建这些组件并保证它们的依赖能够得到满足,这样的话,组件才能完成预定的任务。

  • 在Spring中装配bean的三种主要方式:自动化配置、基于Java的显式配置以及基于XML的显式配置。
    优先自动化配置、然后Java显式配置,最后才用XML显式配置

  • 依赖注入 是Spring中非常重要的组成部分,无处不在

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值