maven/spring03
- 概述
- 相关术语
- SpringAOP步骤
-
- 四种通知类型
- Spring事务管理
- Spring+MyBatis整合
-
- 配置
- 整合步骤
概述
Spring核心模块:
IOC解耦合
AOP——面向切面编程,使用动态代理技术、方法增强
优势:减少重复代码、提?开发效率、?便维护
动态代理特点:
代理对象和被代理对象拥有相同的父接口
如果被代理对象没有父接口, 能不能进行方法增强?
CGLib Enhancer类
代理对象 继承 被代理对象类
注:使用final修饰就不能用CGLib代理
相关术语
SpringAOP步骤
1.导包 spring-aspect
2.准备通知类 - 对应的方法
3.在spring中注册通知类对象
4.配置aop aop:config
注册切入点 <aop:pointcut expression=“execution(方法名)”>
配置通知 + 织入 aop:aspect
通知种类: 前置通知 , 3种后置通知 , 环绕通知
四种通知类型
前置通知
后置通知
after: 在切入点执行之后执行
后置通知/异常后置通知(二选一)
after-returning: 在切入点正确执行之后 执行
after-throwing: 在切入点出现异常后 执行
环绕通知
Spring事务管理
Spring对于事务管理 -> Spring AOP技术
事务: 业务层面上不可分割的最小单位
特性: 原子性 一致性 隔离性 持久性
并发问题: 脏读 幻读[增删] 不可重复读[修改]
隔离级别: 读未提交 读已提交 可重复度 串行化
Spring事务管理的通知 PlatformTransactionManager
JdbcTemplate -> DataSourceTransactionManager
Hibernate5 -> Hibernate5TransactionManager
Spring 对于事务管理的属性设置:
1.隔离级别
2.传播行为
3.只读性 只有查询操作只读
考虑Spring对于事务的管理 - AOP原理
1.通知类 DataSourceTransactionManager
2.切入点
3.事务属性设置 tx:advice
Spring+MyBatis整合
配置
1.主配置文件Configuration
别名, 属性集, 连接数据库环境, 注册Mapper映射文件
2.Mapper映射文件 - SQL语句
select insert update delete
if foreach where sql
key value
namespace.id
动态代理开发Dao层
接口[方法] Mapper-sql语句
1.接口和映射文件 必须在同一个包下, 名字要一致
2.映射文件 中 namespace 必须是对应接口的全限定类名
3.接口中的方法名, 和mapper中的sql标签的id名要一致
4.方法参数类型, 和mapper中的parameterType类型一致
5.方法返回值类型, 和mapper中的resultType类型一致
- a.读取配置文件 Resource
b.构建者模式 创建了一个 SqlSessionFactory对象
c.工厂模式 获得了一个 SqlSession对象
d.动态代理模式 获得对应的Dao接口对象
e.调用接口方法 操作数据库
整合步骤
1.jar包 mybatis-spring-xx
2.MyBatis 核心对象 交给Spring容器管理
SqlSessionFactory 注册到Spring容器中
Dao 注册到Spring容器中[注意点: 没有实现类]