一、学习提纲
二、核心概念
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依赖于框架容器,基于反射机制,只过滤请求