深入理解 Spring IoC 实现原理

一、学习提纲

在这里插入图片描述

二、核心概念

1. 什么是IoC:

   IoC:Inversion of Control,控制反转、依赖注入

   控制什么? 答:控制对象的创建和销毁(生命周期)。
   反转什么? 答:将对象的控制权交给IoC容器。

三、开发一个IoC容器

1. 基本功能:

  1. 实例化bean
  2. 保存bean
  3. 提供bean
  4. 解决依赖关系

2. bean结构:

在这里插入图片描述
  解释说明:
  1. Car接口:汽车接口,包含start、turnLeft、turnRight和stop四个方法。
  2. Audi类:奥迪类实现汽车接口。
  3. Benz:奔驰类实现汽车接口。
  4. Human接口:人类接口,包含goHome方法。
  5. CarOwner:车主抽象类,实现人类接口,包含属性Car。
  6. ZhangSan类:张三类继承车主抽象类,包含属性Car和goHome方法。
  7. LiSi类:李四类继承车主抽象类,包含属性Car和goHome方法。

3. IoContainer:

在这里插入图片描述
在这里插入图片描述   解释说明: 此类代码并不复杂,不再赘述。

4. 测试:

在这里插入图片描述

四、Spring实例化 bean(基于xml方式)

1. Spring实例化 bean的三种方式:

  ① 通过构造方法实例化bean
  ② 通过静态方法实例化bean
  ③ 通过实例方法实例化bean

2. 通过构造方法实例化bean :

  ① Bean
在这里插入图片描述
  ② spring.xml
在这里插入图片描述
  ③ 测试
在这里插入图片描述

3. 通过静态方法实例化bean :

  ① Bean2
在这里插入图片描述
  ② Bean2Factory
在这里插入图片描述
  ③ spring.xml
在这里插入图片描述
  ④ 测试
在这里插入图片描述

4. 通过实例方法实例化bean :

  ① Bean3
在这里插入图片描述
  ② Bean3Factory
在这里插入图片描述
  ③ spring.xml
在这里插入图片描述
  ④ 测试
在这里插入图片描述

五、Bean的作用域

1. singleton作用域 :

单例作用域,一套上下文(环境)中一个类型的bean只存在一个。

2. prototype作用域 :

多例作用域,一套上下文(环境)中一个类型的bean可以存在多个。

3. web环境作用域 :

  1. request作用域
    每个request请求,都会创建一个bean实例。
  2. session作用域
    每个session内,存在一个bean实例。
  3. application作用域
    每个servlet上下文(环境)内,存在一个bean实例。
  4. websocket作用域
    每个websocket连接,都会创建一个bean实例。

4. 自定义作用域 :

  1. 实现Scope接口,重写get和remove方法。
在这里插入图片描述
  2. 使用JavaConfig配置。
在这里插入图片描述

六、Bean相关知识点

1. Bean的加载模式 :

  bean默认是singleton(单例)模式的,是饿汉式加载,也就是说在Spring上下文创建之前,就已经把bean加载出来了。如果想设置bean的加载模式是懒加载可以用@Lazy注解修饰。

2. Bean初始化操作 :

   如果需要在Bean实例化后,执行一些逻辑,有下面两种方法
  1.使用 init-method定义方法(配合xml文件中 bean标签的 init-method属性使用或@Bean注解的属性设置)
  2.让Bean实现 InitializingBean接口,重写afterPropertiesSet方法
  3.用@PostConstruct修饰Bean里面的初始化方法。

3. Bean销毁前操作 :

   如果需要在Bean销毁前,执行一些逻辑,有下面两种方法
  1.使用destory-method 定义方法(配合xml文件中 bean标签的 destory-method属性使用或@Bean注解的属性设置)
  2.让Bean实现 DisposableBean接口,重写destory方法
  3.用@PreDestory修饰Bean里面的销毁前方法。

七、过滤器和拦截器的区别

   过滤器Fililter依赖于Servlet容器,基于回调函数,过滤范围大
   拦截器Interceptor依赖于框架容器,基于反射机制,只过滤请求

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值