6核心:
- IOC:把创建对象的过程交给Spring容器
- AOP:面向切面,不该源代码进行功能增强
特点:
- 方便解耦,简化开发
- Aop编程
- 方便测试
- 方便事务管理
- 降低API分装
IOC
底层原理:xml,工厂,反射
高耦合
- 工厂模式,低耦合度
配置xml文件
通过解析获取地址
反射forname方法创建对象
newInstance返回对象
- IOC接口
IOC底层就是对象工厂
Spring提供IOC容器两种方式
1.BeanFactory:IOC容器基本实现,是内部使用,不提供给开发人员
加载配置文件不会创建对象,在获取对象(使用)才会创建对象
2.ApplicationContext:BeanFactory子接口,提供了更多强大的接口
加载配置文件就会把文件对象进行创建
接口实现类
bean管理
bean的两个操作
Spring创建对象
Spring注入属性
管理方式:
- 基于xml
属性:
id:唯一标识
class:类全属性
name:唯一标识(可以加特殊属性用于stust)
创建对象时候,默认也是执行无参构造方法
基于xml
注入属性:基于xml,DI:依赖注入(必须在对象创建之前实现)
1.通过set方法注入:创建类与set方法。
2.通过有参构造器
有参构造器构造
3.p名称空间注入,可以简化xml配置方式
4.注入其他属性
1.null
2.特殊符号
要么转义要么用CDATA
5.注入外部bean:service层与DAO层
在service调用dao(dao注入service)
6.注入内部bean 实体类表示一对多的关系,员工属于部门,使用对象属性进行表示
7.级联赋值
就是改用了外部bean方法,用ref关键字注入
Spring有两种bean,一种为普通bean,另外一种是bean(FactoryBean)
:配置文件定义的bean类型就是返回类型
工厂bean:返回类型可以不一样
- 创建类,让类作为工厂bean,实现接口FactoryBean
- 实现接口里面的方法,在实现的方法中定义返回类型
工厂实现之初
bean生命周期与作用域
1.Spring中设置的bean是单实例(只有一个对象)还是多实例(每次都是建一个对象)
默认是单实例
2.设置为多实例
Spring配置文件bean标签里面有属性(scope)用于设置单实例还是多实例
默认值:singleton单实例,加载spring配置文件时就会产生单实例对象
prototype多实例,在调用getbean创建多实例对象
request:一次请求
session:一次会话
生命周期:一个对象从创建到销毁
1.通过构造器创建bean实例(无参构造器)
2.对bean的属性设置值,或者对其他bean的引用(set方法)
3.调用bean初始化方法(需要配置)
4.bean可以使用了(对象获取了)
5.当容器关闭了,调用bean的销毁方法(需要配置)
6.7bean的后置处理器
1.通过构造器创建bean实例(无参构造器)
2.对bean的属性设置值,或者对其他bean的引用(set方法)
3.把bean实例传递给bean的后置处理器方法
4.调用bean初始化方法(需要配置)
5.把bean实例传递给bean后置的处理器方法
6.bean可以使用了(对象获取了)
7.当容器关闭了,调用bean的销毁方法(需要配置)
后置处理器:
1.创建类,实现接口beanpostprocessor:后置处理器