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

  • 相关阅读:
    设计模式:备忘录模式(Memento)
    设计模式:中介者模式(Mediator)
    设计模式:迭代器模式(Iterator)
    设计模式:解释器模式(Interpreter)
    设计模式:命令模式(Command)
    设计模式:职责链模式(Chain of Responsibility)
    设计模式:单例模式(单例模式)
    win7硬盘安装方法
    sqlite 附加和分离数据库
    Sqlite 复制表结构和数据
  • 原文地址:https://www.cnblogs.com/wenwenzuiniucha/p/14808916.html
Copyright © 2011-2022 走看看