IOC
- IOC底层原理:XML,工厂模式,反射
- Spring提供IOC容器实现的两种方式:
- BeanFactory: IOC容器基本实现,是Spring内部使用的,加载配置文件的时候,不会创建对象,只有获取对象的时候,才会创建对象
- ApplicationContext: BeanFactory的子接口,功能更加强大,加载配置文件的时候,就会把配置文件中的对象创建(前提是scop是默认设置的值singleton),还有额外的功能,如国际化的配置等。
- Bean生命周期IOC
- 通过构造器创建Bean实例(无参构造器)
- 为Bean的属性设置值 (set赋值)
- 前置处理器
- 调用Bean的初始化方法(需要进行配置)
- 后置处理器
- 使用bean
- 容器关闭时,调用bean的销毁方法
- AOP
- 有接口的情况:JDK动态代理
- 没有接口的情况:cglib动态代理
- 连接点:类里面的哪些方法可以增强,这些方法被称为连接点
- 切入点:实际被真正增强的方法
- 通知(增强):增强的逻辑部分被称为通知(增强)
- 前置通知
- 后置通知
- 环绕通知
- 异常通知
- 最终通知
- 切面:把通知应用到切入点的过程
- 事务
- 编程式事务
- 声明式事务(底层使用aop原理)
- 基于注解
- 基于xml
- 事务参数
- propagation:事务传播行为
- required:事务A中的方法A调用事务B中的方法B,方法B会加入到事务A中。
- required_new:
- spports:
- 事务隔离性(isolation)
- 脏堵:读未提交
- 不可重复读:读已提交(修改)
- 幻读: 读已提交(添加)
- timeout:超时时间
- 事务需要在一定的时间内进行提交,如果不提交进行回滚
- readOnly:是否只读
- readOnly: 默认false
- rollbackFor:回滚
- 可以设置出现哪些异常回滚
- noRollbackFor
- 可以设置出现哪些异常不回滚
- propagation:事务传播行为
- Spring5 新功能
- 支持log4j2,不支持log4j
- @Nullable:用在方法上表示方法返回值可以为空,用在参数上,表示参数可以为空。用在属性上,表示属性值可以为空