zoukankan      html  css  js  c++  java
  • SpringAOP学习第一天 @Pointcut注解

    自从上班之后,就很少再看AOP相关的内容,几年时间里虽然也有一两次完整看过,一直没有机会用到,都忘记了。今天重温一下

    TestNG测试类

    package com.test.spring.aop.mineunderstatnd1;
    
    import java.util.HashMap;
    import java.util.Map;
    
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.test.context.ContextConfiguration;
    import org.springframework.test.context.testng.AbstractTestNGSpringContextTests;
    import org.testng.annotations.Test;
    
    @ContextConfiguration(classes={AppConfig.class})
    public class RechargeTest extends AbstractTestNGSpringContextTests{
        
        @Autowired
        private AccountRecharge accountRecharge;
    
        @Autowired
        private Interceptor interceptor;
    
        @Test
        public void test() {
            Map request = new HashMap();
            accountRecharge.execute(request);
        }
    }

    业务类

    package com.test.spring.aop.mineunderstatnd1;
    
    import java.util.HashMap;
    import java.util.Map;
    
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.test.context.ContextConfiguration;
    import org.springframework.test.context.testng.AbstractTestNGSpringContextTests;
    import org.testng.annotations.Test;
    
    @ContextConfiguration(classes={AppConfig.class})
    public class RechargeTest extends AbstractTestNGSpringContextTests{
        
        @Autowired
        private AccountRecharge accountRecharge;
    
        @Autowired
        private Interceptor interceptor;
    
        @Test
        public void test() {
            Map request = new HashMap();
            accountRecharge.execute(request);
        }
    }

    切面类

    @Aspect
    public class Interceptor {
        @Pointcut("execution(* com.test.spring.aop.mineunderstatnd1.AccountRecharge.execute(java.util.Map)) && args(request)")
        public void execute(HashMap request){}
        @Before("execute(request)")
        public void before(HashMap request) {
            System.out.println("前置拦截器");
        }
    }

    配置类

    package com.test.spring.aop.mineunderstatnd1;
    
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.ComponentScan;
    import org.springframework.context.annotation.Configuration;
    import org.springframework.context.annotation.EnableAspectJAutoProxy;
    
    @Configuration
    @EnableAspectJAutoProxy
    @ComponentScan
    public class AppConfig {
        @Bean
        public AccountRecharge AccountRecharge() {
            return new AccountRecharge();
        }
        @Bean
        public Interceptor interceptor() {
            return new Interceptor();
        }
    }

    运行结果:

    前置拦截器
    do recharge
    PASSED: test
  • 相关阅读:
    python 类定义 继承
    BAYSY2 的LVDS引脚 笔记
    Fedora20-32bit cross-compiling arm-linux-gcc4.3.2
    以冒泡排序为例--malloc/free 重定向stdin stdout
    笔记:程序内存管理 .bss .data .rodata .text stack heap
    第一章 数值和码制
    《将博客搬至CSDN》
    Servlet 3.0 新特性
    java Servlet接口及应用
    C语言输出单个汉字字符
  • 原文地址:https://www.cnblogs.com/heben/p/7277446.html
Copyright © 2011-2022 走看看