spring aop小结
二. Springaop
1. 增强类型
1) @Before:前置增强
2) @After:后置增强,不管是否抛出异常,相当于finally代码块的代码
3) @AfterThrowing异常后增强:
4) @AfterReturning:返回后增强,相当于方法执行后紧接着的代码
5) @Around:环绕增强,传入一个ProceedingJoinPoint用于调用业务模块的代码的对象,可以实现其他四类增强所有功能
2.各种增强调用时间:
业务方法:Public String businessMethod(){
}
动态代理回调中的方法执行顺序
invoke(){
try{
@Before
String result =businessMethod();
@AfterReturning
}catch(Exception e){
@AfterThrowing
}finally{
@After
}
}
2.常用切点表达式
1.方法切点表达式:
1) 例子:
execution(public * com.spring.service.BusinessObject.businessService(java.lang.String,..))
2)说明:
指定方法的访问控制修饰符、返回值、包名、方法名、参数名、声明抛出的异常
2.类切点表达式
1) 例子:
指定类:within(com.spring.service.BusinessObject)
指定包但不包含子包:within(com.spring.service.*)
指定包但包含子包:within(com.spring.service..*)
特殊用法:指定使用了某个注解的类:
@within(com.spring.annotation.BusinessAspect)
3.参数切点表达式
1) 例子:
指定方法参数: args(java.lang.String,..,java.lang.Integer)
特殊用法:指定参数上使用了某个注解的方法
@args(com.spring.annotation.BusinessAspect)
4.注解切点表达式
指定使用了注解的方法:
@annotation(com.spring.annotation.BusinessAspect)
原文地址:https://www.cnblogs.com/mk190705/p/15314244.html
- JS魔法堂:ES6新特性——GeneratorFunction介绍
- jQuery.unique引发一个血案
- TCP/IP(二)物理层详解
- JavaScript中的日期处理注意事项
- 概率论11 协方差与相关系数
- Mybatis传多个参数(三种解决方案)
- 语义化HTML:i、b、em和strong标签
- JSON入门指南--服务端处理JSON
- 纸上谈兵: 图 (graph)
- 纸上谈兵: 拓扑排序
- MyBatis Generator自动创建代码
- Maven(六)之依赖管理
- 细说log4j
- SEVERE: Error configuring application listener of class org.springframework.web.context.ContextLoade
- java教程
- Java快速入门
- Java 开发环境配置
- Java基本语法
- Java 对象和类
- Java 基本数据类型
- Java 变量类型
- Java 修饰符
- Java 运算符
- Java 循环结构
- Java 分支结构
- Java Number类
- Java Character类
- Java String类
- Java StringBuffer和StringBuilder类
- Java 数组
- Java 日期时间
- Java 正则表达式
- Java 方法
- Java 流(Stream)、文件(File)和IO
- Java 异常处理
- Java 继承
- Java 重写(Override)与重载(Overload)
- Java 多态
- Java 抽象类
- Java 封装
- Java 接口
- Java 包(package)
- Java 数据结构
- Java 集合框架
- Java 泛型
- Java 序列化
- Java 网络编程
- Java 发送邮件
- Java 多线程编程
- Java Applet基础
- Java 文档注释
- 论文笔记&翻译——Enhanced LSTM for Natural Language Inference(ESIM)
- Day 5:用两个栈实现队列
- C++核心准则T.42:使用模板别名简化记法并隐藏实现细节
- Python实战——ESIM 模型搭建(keras版)
- MapReduce工作笔记——Job调度参数设置
- 矩阵操作试题(C++/Python)——矩阵元素逆时针旋转90度(升级版)
- Macdown中[toc]无法生成目录解决方法
- Linux实用技巧——mkdir创建多级新目录
- C++核心准则T.43: 定义别名时,using比typedef更好
- C++核心准则T.44:使用函数模板推断类模板参数类型(如果可能)
- python函数——浅拷贝copy()以及深拷贝deepcopy()
- 数据结构算法操作试题(C++/Python)——两数之和
- C++核心准则T.46:要求模板参数最少是正规或半正规的
- python函数——List获取索引(多相同值解决方法)
- C++核心准则T.47:避免使用通用名称的高度不受限模板