zoukankan      html  css  js  c++  java
  • Spring的AOP快速上手

    快速写一个 Spring AOP 实现类

    1. 定义业务类,使用 @Service 注解加入 Spring 容器。
    @Service
    public class MyService {
      public String print() {
        System.out.println("print...");
        return "End";
      }
    }
    
    1. 定义切面类,使用 @Component 注解加入 Spring 容器,标注 @Aspect 表示此类为切面类,并给方法标注通知类型。

    通知类型

    • 前置通知
    • 后置通知
    • 返回通知
    • 异常通知
    • 环绕通知
    @Aspect
    @Component
    public class MyAspect {
    
      @Pointcut("execution(* com.xxx.MyService.*(..))")
      public void pointCut() {
      }
    
      @Before("pointCut()")
      public void start() {
        System.out.println("前置通知");
      }
    
      @After("pointCut()")
      public void end() {
        System.out.println("后置通知");
      }
    
      @AfterReturning("pointCut()")
      public void returnStart() {
        System.out.println("返回通知");
      }
    
      @AfterThrowing("pointCut()")
      public void exceptionStart() {
        System.out.println("异常通知");
      }
    
      @Around("pointCut()")
      public Object startAround(ProceedingJoinPoint joinPoint) throws Throwable {
        System.out.println("环绕通知开始");
        Object proceed = joinPoint.proceed(joinPoint.getArgs());
        System.out.println("环绕通知结束" + proceed);
        return proceed;
      }
    }
    
    1. 定义启动类
    @EnableAspectJAutoProxy
    @ComponentScan
    public class App {
      public static void main(String[] args) {
        AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(App.class);
    
        MyService service = context.getBean(MyService.class);
        System.out.println("启动");
        String print = service.print();
        System.out.println(print);
    
      }
    }
    

    输出

    启动
    环绕通知开始
    前置通知
    print...
    环绕通知结束End
    后置通知
    返回通知
    End
    
  • 相关阅读:
    leetcode18
    CSS 1. 选择器
    HTML
    练习题|MySQL
    练习题||并发编程
    第八章| 3. MyAQL数据库|Navicat工具与pymysql模块 | 内置功能 | 索引原理
    mysql练习
    第八章| 2. MySQL数据库|数据操作| 权限管理
    第八章| 1. MySQL数据库|库操作|表操作
    第七章|7.4并发编程| I/O模型
  • 原文地址:https://www.cnblogs.com/bigshark/p/11318778.html
Copyright © 2011-2022 走看看