一.Spring概述
Spring定义
- 轻量级
- 一站式开发工具
- 框架
核心技术
- Inversion of Control (IoC控制反转)
- Aspect-Orientd Programming(AOP,面向切面编程)
- Aspect-Orientd Programming(AOP,面向切面编程)
为什么用spring
提高开发效率
IoC控制反转
就像螺丝刀,有一字型的,十字星的,我能用什么这取决于生产商;但是我控制反转以后,我使用的是可以替换头的螺丝刀,这时候控制权就在我手上了
控制的是:
对 对象的依赖(创建螺丝刀时候,需要将依赖的对象(刀口),注入到螺丝刀上面) 这就叫 Dependency Injection (DI,依赖注入)
注意:DI是要达成的目标,IoC是达成目标的一个方式
谁来控制:
- 对象的提供者(就是螺丝刀的生产商,我生产什么类型的螺丝刀,你就能用什么类型的螺丝刀)
- 使用者:不需要创建对象,IoC容器会帮你把对象创建好,你只用使用就行
AOP,面向切面编程
将业务逻辑(核心部分,比如计算器里面除法的逻辑) 与 非业务逻辑(比如抛出异常、输出部分) 分离
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-AwS6NzKe-1585211001225)(C:\Users\黄大仙人\AppData\Roaming\Typora\typora-user-images\image-20200315201558889.png)]
这样做的好处就是,可以单独去修改业务逻辑 和 非业务逻辑部分,互不影响
Aspect 切面 是指 日志、安全 的功能
Spring框架提供的模块
Core Container (IoC容器)
- 对象的创建、装配
- 对象生命周期管理
- 上下文环境
Data Access数据访问
- JDBC支持
- 连接管理
- 异常处理
- 事务管理
- ORM整合
Web框架
- Servlet Based MVC
- Web工具支持
- 模板支持
二.IoC容器
概述
Bean
将对象都称为Bean
初始化容器
Bean定义
比如现在我要定义ScrewDriver这个对象称为Bean
我只需要在xml配置文件里面加上一行代码,就可以将其定义为Bean
*Bean的使用过程
*Bean的作用域
就是bean的有效范围,在哪能访问
singleton 单例
默认的作用域,就是创建bean以后,会一直使用着这个bean,中间怎么修改,都是修改这个bean的
eg:
prototype
就是说,每次引用bean时候都是会创建一个全新的bean,不受之前的bean影响
eg:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gLmHTDwu-1585211001236)(C:\Users\黄大仙人\AppData\Roaming\Typora\typora-user-images\image-20200317192333063.png)]
Bean生命周期回调
就是可以在bean创建、销毁以后,那一瞬间对bean进行操作
创建
销毁
eg:
依赖注入ID
四种注入方式:
1、按从上到下方式顺序配置:
2、用index,先从0开始的
3、通过对应的字符类型
4.名称对应
输出都是这样的: