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、结果

  • 相关阅读:
    关于findViewById返回空指针的错误
    android客户端向服务器发送图片和文字,类似于发微博。能用json格式发送吗?
    nodejs 学习资料大全
    篇章三:[AngularJS] 使用AngularCSS動態載入CSS
    篇章二:[AngularJS] 使用AngularAMD動態載入Service
    篇章一:[AngularJS] 使用AngularAMD動態載入Controller
    Angular 资料大集合
    js-音乐播放器,播放|暂停|滑块的功能
    JS-以鼠标位置为中心的滑轮放大功能demo1
    使用 Electron 构建桌面应用(拖动控制篇)
  • 原文地址:https://www.cnblogs.com/wenwenzuiniucha/p/14808916.html
Copyright © 2011-2022 走看看