zoukankan      html  css  js  c++  java
  • 运用Aop自定义注解

    1、建一个注解接口类MyNote

    package com.xiangwen.test.mynote;
    
    import static java.lang.annotation.ElementType.METHOD;
    import static java.lang.annotation.RetentionPolicy.RUNTIME;
    import java.lang.annotation.Documented;
    import java.lang.annotation.Retention;
    import java.lang.annotation.Target;
    @Documented
    @Retention(RUNTIME)
    @Target(METHOD)
    /**
     * 自定义注解
     */
    public @interface MyNote {
    }
    

    2、定义一个切面类MyNoteImpl

    package com.xiangwen.test.mynote;
    
    import org.aspectj.lang.annotation.Aspect;
    import org.aspectj.lang.annotation.Before;
    import org.aspectj.lang.annotation.Pointcut;
    import org.springframework.stereotype.Component;
    
    /**
     * <h5>描述:通过@Aspect注解使该类成为切面类</h5>
     */
    @Aspect
    @Component
    public class MyNoteImpl {
        @Pointcut("@annotation(com.xiangwen.test.mynote.MyNote)")
        private void cut() {
        }
    
        /**
         * <h5>功能:前置通知</h5>
         */
        @Before("cut()")
        public void before() {
            System.out.println("自定义注解生效了");
        }
    }

    3、建一个扫包类AppConfig

    package com.xiangwen.test.mynote;
    
    import org.springframework.context.annotation.ComponentScan;
    import org.springframework.context.annotation.Configuration;
    import org.springframework.context.annotation.EnableAspectJAutoProxy;
    
    @Configuration
    @ComponentScan( "com.xiangwen.test.mynote")
    @EnableAspectJAutoProxy(proxyTargetClass = true)
    public class AppConfig {
    }

    4、建一个测试类加上自定义注解

    package com.xiangwen.test.mynote;
    
    import org.springframework.stereotype.Component;
    
    @Component
    public class Car {
        @MyNote//自定义注解
        public void running(){
            System.out.println("汽车跑起来了");
        }
    }

    5、运行

    package com.xiangwen.test.mynote;
    
    import org.junit.jupiter.api.Test;
    import org.springframework.context.annotation.AnnotationConfigApplicationContext;
    
    public class AppTest {
        @Test
        public void test1(){
            AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(AppConfig.class);
            Car car = context.getBean("car",Car.class);
            car.running();
        }
    }

    6、结果

  • 相关阅读:
    JavaScript_01简介,基本语法,运算符
    JAVA_内部类
    JAVA_接口_默认方法&静态方法
    软件工程_01面向对象分析
    mybatis_16逆向工程
    mybatis_15整合ehcache
    mybatis_14二级缓存
    mybatis_13一级缓存
    mybatis_12延时加载_懒加载
    JWT如何在Spring Cloud微服务系统中在服务相互调时传递
  • 原文地址:https://www.cnblogs.com/wenwenzuiniucha/p/14808916.html
Copyright © 2011-2022 走看看