Spring AOP

实现原理:
AOP思想的实现一般都是基于 代理模式

Spring AOP_第1张图片
动态代理
  1. 如果目标对象的实现类实现了接口,Spring AOP 将会采用 JDK 动态代理来生成 AOP 代理类;
  2. 如果目标对象的实现类没有实现接口,Spring AOP 将会采用 CGLIB 来生成 AOP 代理类——不过这个选择过程对开发者完全透明、开发者也无需关心。

Spring 中对应了 5 种不同类型的通知:

· 前置通知(Before):在目标方法执行前,执行通知
· 后置通知(After):在目标方法执行后,执行通知,此时不关系目标方法返回的结果是什么
· 返回通知(After-returning):在目标方法执行后,执行通知
· 异常通知(After-throwing):在目标方法抛出异常后执行通知
· 环绕通知(Around): 目标方法被通知包裹,通知在目标方法执行前和执行后都被会调用


@Aspect//切面注解
@Component//构成
public class LoginAspect
{
    //切点
    // @Pointcut(value = "@annotation(com.zhongan.xman.thor.annotion.SmsMonitor)")
    @Pointcut("execution(public * com.jieshao.evm.Controller.ManagerController.login(..))")
    public void login(){//切点映射,命名不规定
        System.out.println("aspect");
    }
    //在本类的login执行之前
    @Before("login()")
    public void beforelogin()
    {
        System.out.println("before");
    }

    @Around("login()")
public Object around(ProceedingJoinPoint joinPoint) throws Throwable {
    {
                   return  joinPoint.proceed();
    }
    //在本类的login执行之后执行
    @After("login()")
    public void afterlogin(){System.out.println("after");}

你可能感兴趣的:(Spring AOP)