Spring的AOP的基于AspectJ的注解开发
一.开发步骤
- 创建项目,引入jar包
- 引入配置文件 applicationContext.xml
- 编写目标类,并配置,由Spring管理
- 编写切面类.并配置,由Spring管理
- 使用注解的AOP对象目标类进行增强
- 在配置文件中打开注解的AOP开发
- 在切面类上使用注解 - 编写测试类
二.Spring的注解的AOP的通知类型
- @Before : 前置通知
- @AfterReturning : 后置通知
- @Around :环绕通知
- @AfterThrowing :异常抛出通知 :
- @After :最终通知
- 可以配置切入点注解 @Pointcut
Spring的JDBC的模板的使用
一.JDBC的模板使用的入门
- 创建项目,引入jar包
- 引入基本开发包
- 数据库驱动
- Spring的JDBC模板的jar包 - 创建数据库和表
- 使用JDBC的模板:保存数据
二.将连接池和模板交给Spring管理
- 引入Spring的配置文件
- 使用Jdbc的模板
- 引入spring_aop的jar包 - 使用开源的数据库连接池
- DBCP的使用
- 引入jar包
- 配置DBCP连接池 - C3P0的使用
- 引入C3P0的jar包
- 配置C3P0连接池
- DBCP的使用
- 抽取配置到属性文件
- 定义一个属性文件
- 在Spring的配置文件中引入属性文件
- - 第一种:
- - 第二种:
- 引入属性文件的值
- 测试
三.使用JDBC模板完成CRUD的操作
- 保存操作
- 修改操作,删除操作, 同上
- 查询操作
- 查询某个属性
- 查询返回对象或集合
Spring的事务管理
一.事务概述
- 事务 : 逻辑上的一组操作,组成这组操作的各个单元,要么全部成功,要么全部失败
- 事务特性 : 原子性,一致性,隔离性,持久性
- 不考虑隔离性引发安全性问题
- 读问题 : 脏读,不可重复读,幻读
- 写问题 : 丢失更新 - 解决读问题
设置事务的隔离级别:
- Read uncommitted
- Read committed
- Repeatable read
- Serializable
二.Spring的事务管理的API
- PlatformTransactionManager 平台事务管理器
- 平台事务管理器 : 接口, 是Spring用于管理事务的真正的对象
DataSourceTransactionManager : 底层使用JDBC管理事务
HibernateTransactionManager : 底层使用Hibernate管理事务
- 平台事务管理器 : 接口, 是Spring用于管理事务的真正的对象
- TransactionDefinition 事务定义
- 事务定义 : 用于定义事务的相关的信息, 隔离级别,超时信息,传播行为,是否只读
- TransactionStatus : 事务状态
- 事务状态: 用于记录在事务管理过程中,事务的状态的对象
- 事务管理的API的关系:
Spring进行事务管理的时候,首先平台事务管理器根据事务定义信息进行事务的管理,在事务管理过程中,产生各种状态,
将这些状态的信息记录到事务状态的对象中
三.Spring的事务的传播行为
Spring中提供了七种事务的传播行为
- 保证多个操作在同一个事务中
- PROPAGATION_REQUIRED : 默认值,如果A中有事务,使用A中的事务,如果A没有,创建一个新的事务,将操作包含进来
- PROPAGATION_SUPPORTS :支持事务,如果A中有事务,使用A中的事务,如果A中没有,不使用事务
- PROPAGATION_MANDATORY :如果A中有事务,使用A中的事务,如果A中没有,就抛出异常 - 保证多个操作不在同一个事务中
- PROPAGATION_REQUIRES_NEW :如果A中有事务,将A的事务挂起,创建新事务,只包含自身操作.如果A没有,就创建新的 .
- PROPAGATION_NOT_SUPPORTED :如果A中有事务,也不会使用A中事务,不使用事务
- PROPAGATION_NEVER :如果A中有事务,报异常 - 嵌套式事务
- PROPAGATION_NESTED :嵌套事务,如果A中有事务,按照A的事务执行,执行完成后,设置一个保存点,执行B中的操作,
如果没有异常,执行通过 , 如果有异常,我们可以选择回滚到最初始位置,也可以回滚到保存点 .
四.Spring的事务管理
- 搭建Spring的事务管理的环境
- 创建Service的接口和实现类
- 创建DAO的接口和实现类
- 配置Service和DAO : 交给Spring管理
- 在DAO中编写方法
- - 配置连接池和jdbc的模板
- - 在DAO注入jdbc的模板: //若DAO继承了JdbcDaoSupport这个类,可以在配置时,注入dataSource,会自动创建jdbc模板 - 测试
五.Spring的事务管理 :一类: 编程式事务(需要手动编写代码)
- 配置平台事务管理器
- Spring提供了事务管理的模板类
- 配置事务的管理的模板类 - 在业务层注入事务管理的模板
- 编写事务管理的代码
- 测试
六.Spring的事务管理 :二类:声明式事务管理(通过配置实现) ----AOP
- XML方式的声明式事务管理
- 引入aop的开发包
- 配置事务管理器
- 配置增强
- AOP的配置
- 测试
- 注解方式的声明式事务管理
- 引入aop的开发包
- 配置事务管理器
- 开启注解事务
- 在业务层添加注解 @Transactional