Spring框架概述,IOC容器

  1. Spring是轻量级的开源的javaee框架
  2. Spring可以解决企业应用开放的复杂性
  3. Spring有两个核心部分:IOC和AOP
    IOC:控制反转,把创建对象的过程交给spring进行管理
    AOP:面向切面,不修改源代码进行功能增强
  4. Spring特点
  5. 方便解耦,简化开发,
  6. AOP编程支持
  7. 方便程序测试
  8. 方便和其他框架进行整合,
  9. 方便进行事务操作
  10. 降低api开发难度

IOC容器

Ioc概念和原理
(1) 控制反转,把对象创建和对象之间调度过程,交给spring管理,
(2) 使用ioc目的:为了耦合度降低,

Ioc底层原理

(1) xml解析,工厂模式,反射
画图讲解IOC底层原理
在这里插入图片描述
在这里插入图片描述

Ioc接口:

  1. ioc思想基于ioc容器完成,ioc容器底层就是对象工厂

  2. Spring提供ioc容器实现两种方式(两个接口)
    (1) beanFactory,ioc容器基本实现,是spring内部的使用接口,不提供开发人员使用,加载配置文件时不会创建对象,在获取对象时(使用)才会去创建对象,
    (2) ApplicationContext:BeanFactory接口的子接口,提供更多强大的功能,一般由开发人员进行使用,
    加载配置文件时就创建对象

  3. ApplicationContext接口实现类
    FileSystemXmlApplicationContext
    ClassPathXmlApplcationContext

  4. Ioc操作bean管理

  5. 什么是bean管理
    (1) bean管理指的是两个操作
    (2) spring 创建对象
    (3) spring注入属性

  6. Bean管理
    (1) 基于xml配置文件方式实现
    (2) 基于注解方式实现,

IOC操作bean管理
1.基于xml方式创建对象

(1) 在spring配置文件中,使用bean标签,标签里添加对应属性,就可以实现对象创建
(2) 在bean标签有很多塑像,介绍常用的属性
Id属性:唯一标识
Class属性:类全路径(包类路径)
(3) 创建对象时候,默认也是执行无参构造方法完成对象的创建

  1. 基于xml方式注入属性
    (1):DI:依赖注入,就是注入属性
    第一种注入方式,通过set方法
    第二种有参构造注入,
    第三种在spring配置文件中对象创建,配置属性注入

在这里插入图片描述

在这里插入图片描述
5. 创建了类,定义属性,创建属性对应有参构造方法
在这里插入图片描述
在这里插入图片描述
6. 在spring配置文件中进行配置
7. P名称空间注入()

(1) 使用p名称空间注入,可以简化基于xml配置方式.
第一步添加p名称空间在配置文件中

在这里插入图片描述

第二步进行属性注入,在bean标签里面进行操作
在这里插入图片描述

    1. IOC操作bean管理(xml注入其他类型属性)
  1. 字面量
    (1)null值
    在这里插入图片描述

(2) 属性值包含特殊字符
在这里插入图片描述
2. 注入属性-外部bean
(1) 创建两个类service和dao类
(2) 在service调用dao里的方法
(3) 在spring配置文件中进行配置

在这里插入图片描述
3. 注入属性-内部bean和级联赋值

(1) 一对多关系:部门和员工

(2) 在实体类之间关系是一对多关系

(3) 在spring文件中进行配置

在这里插入图片描述
4.注入属性,级联赋值
第一种写法
在这里插入图片描述
第二种写法

在这里插入图片描述

11. Ioc操作bean管理(xml注入集合属性)

  1. 注入数组类型属性

  2. 注入list类型属性

  3. 注入Map类型属性

  4. 注入Set类型属性
    (1) 创建类,定义数组,list,map,set类型属性,生成对应set方法
    (2) 在spring配置文件中进行配置
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

  5. 在集合里面设置对象类型的值
    在这里插入图片描述

  6. 把集合注入提取出来
    (1) 在spring配置文件中引入名称空间util
    在这里插入图片描述
    (2) 使用util标签完成list集合注入提取
    在这里插入图片描述
    在这里插入图片描述

7. 7. IOC操作bean管理(factoryBean)

  1. Spring有两种类型bean,一种普通bean,另一种工厂bean,
    普通bean:定义bean类型就是返回类型
    工厂bean:定义bean类型和返回类型不一样

  2. 第一步创建类,让这个类作为工厂bean,实现接口factoryBean,
    第二步实现接口里面的方法,在实现的方法中定义返回的bean类型,
    在这里插入图片描述

8. IOC操作bean(bean作用域)

  1. 在spring里面,设置创建bean实例还是多实例
  2. 在spring里面,默认情况下,bean是单实例对象,
    在这里插入图片描述
  3. 如何设置单实例还是多实例

(1) 在spring配置文件bean标签里面有属性(scope)用于设置单实例还是多实例

(2) Scope属性值
第一个值:默认值,singleton,表示是单实例对象,
第二个值:prototype,表示是多实例对象,
在这里插入图片描述
(3) Singleton和prototype区别
第一single单实例,prototype多实例,
第二设置scope值是singleton时,加载spring配置文件时候就会创建单实例对象,
设置scope是prototype时候,不是在加载spring配置文件时候创建对象,在调用getBean方法时候创建多实例对象
Request:
Session:

4. IOC操作Bean管理(bean生命周期)

  1. Bean生命周期
  2. 通过构造器创建bean实例(无参构造),
  3. 为bean的属性设置和对其他bean引用(调用set方法)
  4. 调用bean的初始化方法(需要进行配置)
  5. Bean可以是用了(对象获取到了)
  6. 当容器关闭的时候,调用bean的销毁方法(需要进行配置消费的方法)

9. 演示bean生命周期

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
4, bean的后置处理器,bean的生命周期有七步

  1. 通过构造器创建bean实例(无参构造),
  2. 为bean的属性设置和对其他bean引用(调用set方法)
  3. Bean实例传递bean后置处理器的方法(postProcessBeforeInitialzation)
  4. 调用bean的初始化方法(需要进行配置)
  5. Bean实例传递bean后置处理器的方法(postProcessAfterInitialzation)
  6. Bean可以是用了(对象获取到了)
  7. 当容器关闭的时候,调用bean的销毁方法(需要进行配置消费的方法)
    演示
    在这里插入图片描述
    在这里插入图片描述
    IOC操作bean管理(xml自动装配)
  8. 什么是自动装配
    (1) 根据指定装配规则(属性名称或者属性类型),Spring自动将匹配的属性值进行注入
    在这里插入图片描述
    在这里插入图片描述
    (2) 根据属性类型进行自动注入
    在这里插入图片描述
  9. IOC操作bean管理(外部属性文件)
  10. 直接配置数据库信息
    (1) 配置德鲁伊连接池,引入jar包druid,
    在这里插入图片描述
    在这里插入图片描述
  11. 把外部propertes属性文件引入spring配置文件中,
    引入context名称空间
    在这里插入图片描述
    在spring配置文件中使用标签引入外部属性文件
    在这里插入图片描述

IOC操作Bean管理(基于注解方式)

  1. 什么是注解,
    (1) 注解是代码特殊标记,格式:@注解名称(属性名称=属性值, 属性名称=属性值…)
    (2) 使用注解,注解作用在类,方法,属性上
    (3) 使用注解目的:简化xml配置

  2. Spring针对Bean管理中创建对象提供注解

  3. @Component

  4. @service

  5. @controler

  6. @Repository
    上面四个注解功能是一样的,都可以来创建bean实例,

  7. 基于注解方式实现对象创建

第一步:引入依赖

在这里插入图片描述
第二步
引入名称空间context
开启组件扫描
在这里插入图片描述
第三步创建类,在类上面添加对象注解
在这里插入图片描述

测试

在这里插入图片描述
开启组件扫描细节配置
在这里插入图片描述
在这里插入图片描述

11. 基于注解方式实现属性注入

(1)@AutoWired:根据属性类型自动装配
第一步:把service和dao对象创建,在service和dao类添加创建对象注解
第二步:在service注入dao对象,在service类添加dao类型属性,在属性上面使用注解
在这里插入图片描述
(2)@Qualifier:根据属性名称进行注入
这个@Qualifer注解的使用,和上面@AutoWired一起使用
在这里插入图片描述
(3)@Resource:可以根据属性名称和属性类型注入
在这里插入图片描述
(4)@Value:注入普通类型属性
在这里插入图片描述
完全注解方式使用
(1)创建配置类,替代xml配置文件
在这里插入图片描述
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值