AOP概念入门
编写入门案件
- 添加依赖坐标
- cn.tx.demo1
- 在这个里面写Account实体类
- 写接口
有一个工具类TXuti,它绑定一个线程,把connection向下传递
- 开启事务
- 中间的代码为业务逻辑
- 提交事务
- 把上面3个放入try catch 中捕获异常 finally 关闭资源
- 获取到连接getconnection
- 编写sql语句 String
- 预编译sql语句
- 设置值
- 执行操作excuteupdate
- 关闭资源
saveAll进行加强 继承 装饰者模式 动态代理 这里用jdk的动态代理进行增强 spring的aop,通过配置的方式
直接从容器中获取就是一个代理对象,就可以加一些额外操作 使用jdk的动态代理生成代理对象
AOP概述
面向切面编程
AOP是OOP的延续,是软件开发的一个热点,也是Spring框架中的一个重要内容,是函数式编程的一种衍生物
利用AOP可以对业务逻辑的各个部分进行分离,从而使得业务逻辑的各个组成部分之间的耦合度降低
AOP的作用
解决OOP遇到的一些问题
可以在不修改源代码的前提下,对程序进行增强
AOP的优势
从工具类转变为只写业务逻辑代码
AOP底层实现原理
底层实现的就是动态代理技术:jdk的动态代理和cglib代理技术,前面必须有接口,后者不需要接口,直接继承类
AOP相关的术语
joinpoint连接点:方法,因为spring只支持方法类型的连接点
pointcut 切入点:我们要对哪些连接点进行拦截的定义,表达式决定是否需要增强
advice 通知/增强 拦截连接点之后要做的事情,编写一些具体的代码,编写事务管理相关的代码,自己写代码
target目标对象 代理的目标对象
weaving 织入 整个过程spring框架帮助我们做的
proxy 代理 结果代理类
aspect 切面 切入点和通知的结合,以后有我们自己编写代码和配置,想象成一个线
简单案例
- 导入jar包坐标
- 加入AOP的约束以及AOP的坐标
- 编写一个切面类,自定义的类,有切入点和通知组成,前者有表达式后者是增强的代码。
- 配置切面类,把类交给IOC容器管理<bean> 配置AOP的增强 前置通知 后置通知 主要以为方法的执行前后 切入点的写法是固定的</bean>
切入点的表达式
execution 固定
(public 可以不写
void 返回值 通用的写法*
包名.类名
.方法) (..)
AOP通知的类型
前置通知 目标方法执行前,进行增强
最终通知 目标方法执行成功或者失败,进行增强。类似finally
后置通知 目标方法成功后,进行增强
异常通知 目标方法失败后,进行增强
环绕通知 目标方法执行前后,都进行增强,存在问题为目标对象方法需要手动执行
AOP注解的方式
@各种关键字
纯注解的方式
写一个配置类就可以了