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

  • 相关阅读:
    redis 设置分布式锁要避免死锁
    jmeter的简单http接口用法
    整理一些好的网站或者好的文章来慢慢学
    多线程的共享变量的内存不可见性如何理解
    谷歌浏览器可以google了
    org.apache.commons.dbcp.DelegatingPreparedStatement.isClosed()Z和NewProxyPreparedStatement.isClosed()
    php封装curl,模拟POST和GET请求HTTPS请求
    PHP 轻量级 REST框架
    使用 spring封装的javamail linux服务器发送邮件失败解决
    安装Ruby、Sass在WebStrom配置Scss编译环境css自动压缩
  • 原文地址:https://www.cnblogs.com/wenwenzuiniucha/p/14808916.html
Copyright © 2011-2022 走看看