zoukankan      html  css  js  c++  java
  • ________________springbootのAOP

    AOP开发流程

    1、加入依赖 spring-boot-starter-aop  自动开启AOP支持

    2、写一个Aspect,封装横切关注点(日志、监控等),需要配置通知(前置、后置、环绕、异常...)和切入点(那些包的哪些方法等)

    @Before("execution(* com.lsq.springboot..*.*(..))")

    3、这个Aspect需要加入spring容器,切需要加入@Aspect

    @Component

    @Aspect

    public class LogAspect {

    @Before("execution(* com.lsq.springboot..*.*(..))")

    public void log() {

    System.out.println("Method Log done");

    }

    }

    spring.aop.auto=true

    spring.aop.proxy-target-class=true  

    spring.aop.auto配置项决定是否启用AOP,默认启用

    默认是使用基于JDK的动态代理来实现AOP

    spring.aop.proxy-target-class-false 或者不配置,表示使用JDK的动态代理

    =true表示使用cglib

    如果配置了false,而类没有接口,则依然使用cglib

    JoinPoint

    //可以获取数据和方法名

    @Component

    @Aspect

    public class LogAspect {

    @Before("execution(* com.lsq.springboot..*.*(..))")

    public void log() {

    System.out.println("before  Method Log done");

    }

    @After("execution(* com.lsq.springboot..*.*(..))")

    public void log1(JoinPoint joinpoint ) {

    System.out.println("after Method Log done"+joinpoint.getTarget().getClass()

    +"_____args"+Arrays.asList(joinpoint.getArgs())

    +"__method"+joinpoint.getSignature());

    }

    }

    不配置或者配置false,都不能启用代理对象

    AopContext.currentProxy().getClass();

    @EnableAspectJAutoProxy(exposeProxy=false)

  • 相关阅读:
    OC-内存管理-基本原理与引用计数器
    OC-改错题
    OC-Q&A
    OC-SEL
    CO-类的本质、description方法
    Tomcat 下 mysql的连接池配置和使用
    转:JAVA.NET.SOCKETEXCEPTION: TOO MANY OPEN FILES解决方法
    使应用程序常驻内存,不能被任务管理器关闭之配置文件设置
    解决Tomcat catalina.out 不断成长导致档案过大的问题
    >/dev/null 2>&1的含义
  • 原文地址:https://www.cnblogs.com/qiqisx/p/9383604.html
Copyright © 2011-2022 走看看