【Spring】AOP概述
来源:互联网 发布:淘宝古装知乎 编辑:程序博客网 时间:2024/05/18 01:34
基本概念
Aspect:切面,用于组织多个增强处理;
Advice:增强处理,在特定的点执行的方法;
Jointpoint:连接点,执行过程中明确的点,方法的调用;
Pointcut:切入点,可以插入增强处理的连接点
基本流程
- 在Spring配置文件中配置自动搜索Bean组件,自动搜索切面类
- Spring会根据相应的切面类对组件进行增强
组件Bean
@Component("User")public class Employee implements User{ ... some functions ...}
XML配置
<beans ... > <aop:aspectj-autoproxy> <context:component-scan base-package="com.service.aspect"> <context:include-filter type="annotation" expression="org.aspectj.lang.annotation.Aspect"/> </context:component-scan></beans>
增强处理
Before增强处理
@Aspectpublic class AuthenticateAspect{ @Before("execution(*com.service.impl.*.*(..))") public void Operate(){ System.out.println("运行该Bean前执行一些操作"); }}
AfterReturning增强处理
@Aspectpublic class AuthenticateAspect{ @AfterReturning(returning="rvt",pointcut="execution(*com.service.impl.*.*(..))") public void Operate(Object rvt){ System.out.println("获取Bean的返回值:" + rvt + "后,执行一些操作"); }}
AfterThrowing增强处理
@Aspectpublic class AuthenticateAspect{ @AfterThrowing(throwing="ex",pointcut="execution(*com.service.impl.*.*(..))") public void Operate(){ System.out.println("获取Bean的异常:" + ex+ "后,执行一些操作"); }}
After增强处理
@Aspectpublic class AuthenticateAspect{ @After("execution(*com.service.impl.*.*(..))") public void Operate(){ System.out.println("运行该Bean后执行一些操作"); }}
Around增强处理
@Aspectpublic class AuthenticateAspect{ @Around("execution(*com.service.impl.*.*(..))") public Object Operate(ProceedingJoinPoint pjp)throws java.lang.Throwable{ System.out.println("运行目标方法前执行一些操作"); Object[] args = pjp.getArgs();//获取目标方法的参数 if(args != null && args.length > 1){ args[0] = "123" + args[0];//修改参数 } Object rvt = pjp.proceed(args);//获取目标方法的返回值 System.out.println("运行目标方法后执行一些操作"); if(rvt != null){ rvt = "456"; }//修改返回值 }}
小结
Spring中的AOP代理是由IoC容器实现的;
AspectJ采用编译时增强,而Spring采用动态增强;
我们需要做的只是:定义组件,定义切入点,定义增强处理
阅读全文
0 0
- Spring aop术语概述
- Spring AOP概述
- Spring AOP 概述
- Spring AOP 概述
- Spring AOP 概述
- Spring AOP概述
- Spring aop概述-1
- Spring AOP 概述
- Spring-AOP概述
- 【Spring】AOP概述
- spring学习4-AOP概述
- Spring学习4:AOP概述
- Spring学习-16:AOP的概述
- 1.spring基础:spring概述+基础配置+Java配置+AOP
- AOP概述
- AOP概述
- AOP概述
- AOP概述
- 主题模型-LDA
- POJ-2431-Expedition
- rsync数据备份
- linux下使用谷歌——————满满的心酸史
- 机器人学中旋转矩阵与欧拉角之间互换公式及程序
- 【Spring】AOP概述
- spring各种jar包及其功能
- OpenCV样本训练经验
- 实现能够返回最小值元素的栈(每日一道算法题)
- 设计模式【访问者模式VisitorPattern】
- 2017CCPC哈尔滨 A:Palindrome(manacher+树状数组)
- 参考ethtool写了个Linux设置、获取网卡模式的接口
- IPv4协议笔记
- [Unity基础]Unity本地存储--Sqlite数据库