一、AOP
1、术语
1)连接点Join point
是指在程序运行过程中一些特殊的点/位置,在spring框架连接点通常指的是程序运行过程中某个方法被调用(结合增强再次方法被调用之前或者之后或者抛出异常时这些位置都是连接点)
2)目标对象
被增强之后的对象(原始功能扩展新的功能之后,方法所属的对象)
3) 代理对象
有框架创建出来的对象
4)织入(weaving)
把扩展功能向原始功能进行添加,并创建被增加的对象的过程
2、纯配置实现
1)IOC实现原始功能所在类的对象、扩展功能所在类的对象
2)aop:config标签、aop:aspect标签、aop:pointCut标签、aop:before标签、aop:after-returning标签、aop:around标签、aop:after-throwing标签、aop:after标签
3)有配置有注解实现
1)实现IOC功能的注解:@Service、@Component、@Controller、@Repository
2)实现切面、增强(切点)的注解:@aspect @before @after @ afterRuturning
4)纯注解实现
1)相关类上的注解不变(有配置有注解方式中类上面的添加注解)
2)创建配置类(没有了配置文件),类上有声明注解@Configuration、@ComponentScan、自动代理注解@EnableAspectJAutoProxy
总结:
spring框架涉及到的设计模式
单例模式
工厂模式
代理模式
模板模式
二、aop典型的应用场景
1、分页插件采用aop的思想
2、日志管理采用aop思想
3、拦截器采用aop思想
4、权限验证采用aop思想
5、事务管理采用aop思想
三、aop思想实现事务管理
1、 什么是事务
是一个完整的数据增删改查的执行单元,可能由多条SQL语句组成
2、事务的特性
原子性、一致性、隔离性、持久性 -------ACID
1)原子性:要成功都成功(commit)、要失败都失败(rollback)
2)一致性:事务在执行前后,数据保存不变
3)隔离性:事务和事务之间彼此互不影响
4)持久性:事务在执行前后,对数据的影响是持久的
3、数据异常
脏读数据、不可重复读数据、幻读数据
4、数据异常的处理
事务隔离级别:读未提交、读已提交、可以重复读、串行化/序列化
5、事务的传播性----------spring实现事务管理时提出的概念
比如:在service层的某个方法中存在多个dao层方法的调用service.save(){dao.insert();dao.select();dao.update()},那么传播性就是事务由第一个insert方法传播到第二个select()再传播到第三个update方法;反过来说就是把多个方法纳入一个事务管理单元。
6、spring中如何实现事故管理
1)需求:银行中转账功能的实现
2)实现:
A、创建表、实体类
B、造持久层功能方法
C、造业务层功能
D、相关配置以及事务管理的类
总结:
Spring框架涉及到的设计模式?
单例模式、工厂模式、代理模式、模板模式
7、spring框架中提供的事务管理的方式
1)纯配置
2)配置加注解
<tx:annotation-driven>
@Transactional
3)纯注解
@EnableTransactionManagement
开启事务管理等同于<tx:annotation-driven>
四、spring和mybatis整合
1、整合之后的分工:mybatis负责持久层的操作,即增删改查;spring负责IOC、AOP、事务管理
2、实现整合的步骤:
1)搭建项目、导入依赖
2)配置spring配置文件:扫描包、数据源、事务对象、事务注解驱动、整合mybatis的配置
3)准备mybatis核心文件(可以没有任何配置)和映射文件(相关功能配置)
4)业务层
5)测试