spring:轻量级控制反转(ioc)和面向切面(aop)的容器框架
目录
IOC(控制反转)
控制权的转移:将我们创建对象的方式反转了,以前是有我们自动创建对象,现在将这些类交给spring管理,将创建对象的权利反转给spring框架。
DI(依赖注入)
spring使用JavaBean对象的set方法或者带参数的构造方法为我们创建所需对象时将其属性自动设置所需要的值的过程。
AOP(面向切面编程)
Aspect(切面):通常是一个类,里面可以定义切入点和通知
JointPoint(连接点):程序执行过程中明确的点,一般是方法的调用
Advice(通知):在切入点上执行增强处理,有before,after等
Pointcut(切入点):带有通知的连接点,在程序中主要为书写切入点表达式
应用场景 :
记录日志
监控方法运行时间
权限控制
缓存优化
事务管理
Aop的实现原理:
Jdk动态代理: 面向接口代理
Cglib动态代理:面向对象代理
Spring的事务传播
requeired:支持当前事务,如果没有当前事务就新建一个事务
support:支持当前事务,如果没有当前事务就以非事务的方式执行
mandatory:支持当前事务,如果没有,则抛出异常
requeired-new:新建事务,如果存在当前事务,就把当前事务挂起
not-support:以非事务的方式执行,如果存在当前事务,则将当前事务挂起
never:以非事务的方式执行,如果存在当前事务,就抛出异常
nested:支持当前事务,新增savePoint点,与当前事务同步提交或回滚
Spring的隔离级别
读未提交:READ UNCOMMITED
A事务读取到了B事务未提交的内容,而B事务后面进行了回滚.
不可重复读:READ COMMITED
一个读事务允许其他事务进行写操作,先读取数据,又读取新提交的数据
可重复读(Mysql默认)REPEATABLE READ
A事务读取了一个范围的内容,而同时B事务在此期间插入了一条数据
串行化:SERIALIZABLE
将事务序列化执行,事务只能一个一个接着执行
事务的隔离级别和数据库并发性是成反比的,隔离级别越高,并发性越低