Spring(上)

Spring

IoC控制反转(目的:充分解耦)

  • 使用对象时,由主动new产生对象转换为由外部提供对象,此过程中对象创建控制权由程序转移到外部,此思想称为控制反转

Spring技术对IoC思想进行了实现

  • spring提供了一个容器,称为IoC容器,用来充当IoC思想中的“外部”
  • IoC容器负责对象的创建、初始化等一系列工作,被创建或管理的对象在IoC容器中称为Bean

DI依赖注入

  • 在容器中建立bean与bean之间的依赖关系的整个过程,称为依赖注入

IoC入门案例思路分析

  1. 管理什么?(假设Service业务层和Dao数据层)
  2. 如何将被管理的对像告诉IoC容器?(配置)
  3. 被管理的对象交给IoC容器,如何获取IoC容器?(接口)
  4. IoC容器得知后,如何从容器中获取bean?(接口方法)
  5. 使用Spring导入哪些坐标?(pom.xml)
    1. 导入Spring坐标 在这里插入图片描述
    2. 定义Spring管理的类 在这里插入图片描述
    3. 创建Spring配置文件,配置对应类作为Spring管理的bean 在这里插入图片描述
    4. 初始化IoC容器(Spring核心容器),通过容器用getBean方法获取bean 在这里插入图片描述

DI案例

  1. 删除使用new的方式创建的Dao对象 在这里插入图片描述

  2. 提供依赖对象对应的setter方法 在这里插入图片描述

  3. 配置service与dao之间的关系 在这里插入图片描述
    在这里插入图片描述

bean作用范围配置

在这里插入图片描述

  • 适合造单例的bean:
    • 表现层对象
    • 业务层对象
    • 数据层对象
    • 工具对象
  • 不适合造单例的bean:
    • 封装实体的域对象

bean的实例化的三个方法

  1. 构造方法:提供一个可访问的构造方法,无参构造是默认的
  2. 使用静态工厂(不常用)
  3. 实例

bean 的生命周期

  • 在IoC容器启动之后,并不会马上就实例化相应的bean,此时容器仅仅拥有所有对象的BeanDefinition(BeanDefinition:是容器依赖某些工具加载的XML配置信息进行解析和分析,并将分析后的信息编组为相应的BeanDefinition)。只有当getBean()调用时才是有可能触发Bean实例化阶段的活动

setter注入—简单类型

  • 在bean中定义类型的属性并提供set方法
  • 配置中property标签value属性注入简单类型的数据

构造器注入(和setter类似)

  • 把setter注入里的set方法换成构造方法
  • 把setter注入里的property标签换成constructor-arg标签

自动装配

  • 提供定义好的引用类型的set方法
  • bean标签里添加一个属性autowire=“byType(按类型)” 或者“byName(按名称)”
  • 特点:
    • 自动装配用于引用类型的依赖注入,不能对简单类型进行操作
    • 使用按类型装配时(byType)必须保障容器中相同类型的bean唯一,推荐使用
    • 使用按名称装配时(byName)必须保障容器中具有指定名称的bean,因变量名与配置耦合,不推荐使用
    • 自动装配优先级低于setter注入与构造器注入,同时出现时自动装配配置失效

集合注入

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

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

容器结构

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值