标签:基于接口 fine throws 处理 OWIN 基本 pre return advice
1.概述
spring-aop是一个面向切面的中间件,是对oop的完善和补充。
2.基本概念
(1)Aspect(切面):通常是一个类,里面可以定义切入点和通知
(2)JointPoint(连接点):程序执行过程中明确的点,一般是方法的调用
(3)Advice(通知):AOP在特定的切入点上执行的增强处理,有before,after,afterReturning,afterThrowing,around
(4)Pointcut(切入点):就是带有通知的连接点,在程序中主要体现为书写切入点表达式
(5)AOP代理:AOP框架创建的对象,代理就是目标对象的加强。Spring中的AOP代理可以使JDK动态代理,也可以是CGLIB代理,前者基于接口,后者基于子类
首先config通过将配置转化为BeanDefinetion,BeanDefinetion可以直接产生bean,bean主要是切面和目标
然后切面被封装成Advisor,切面的元素就是Advice,最后代理工厂将Advisor和TargetSource封装成最终的代理。
import org.aspectj.lang.ProceedingJoinPoint; import org.aspectj.lang.annotation.After; import org.aspectj.lang.annotation.AfterReturning; import org.aspectj.lang.annotation.AfterThrowing; import org.aspectj.lang.annotation.Before; import org.aspectj.lang.annotation.Pointcut; import org.aspectj.lang.annotation.Around; import org.aspectj.lang.annotation.Aspect; //日志切面类 @Aspect public class LogAspects { @Pointcut("execution(public int Demo.*(..))") public void pointCut(){}; @Before("pointCut()") public void logBefore(){ System.out.println("before"); } @After("pointCut()") public void logAfter(){ System.out.println("after"); } @AfterReturning("pointCut()") public void logReturn(){ System.out.println("return"); } @AfterThrowing("pointCut()") public void logException(){ System.out.println("error"); } @Around("pointCut()") public Object Around(ProceedingJoinPoint proceedingJoinPoint) throws Throwable{ System.out.println("before"); Object obj = proceedingJoinPoint.proceed(); System.out.println("after"); return obj; } }
@Configuration
@EnableAspectJAutoProxy
public class Demo {
@Bean
public Demo demo(){
return new Demo();
}
}
标签:基于接口 fine throws 处理 OWIN 基本 pre return advice
原文地址:https://www.cnblogs.com/yangyang12138/p/13277234.html