当前位置: 代码迷 >> 综合 >> java day47——springAOP
  详细解决方案

java day47——springAOP

热度:96   发布时间:2024-02-28 13:09:01.0

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类型一致

  1. a.读取配置文件 Resource
    b.构建者模式 创建了一个 SqlSessionFactory对象
    c.工厂模式 获得了一个 SqlSession对象
    d.动态代理模式 获得对应的Dao接口对象
    e.调用接口方法 操作数据库

整合步骤

1.jar包 mybatis-spring-xx
2.MyBatis 核心对象 交给Spring容器管理
SqlSessionFactory 注册到Spring容器中
Dao 注册到Spring容器中[注意点: 没有实现类]

  相关解决方案