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
  • 相关阅读:
    venv(virtual environment)的使用
    Pytest 失败重运行机制
    Python 中方法和函数的区别
    手机移动端WEB资源整合
    Sass学习日志
    1、vue基础使用复习
    vscode配置笔记
    vue兼容IE浏览器、对低版本IE下的友好提示
    关闭eslint校验
    vue实现吸顶的效果
  • 原文地址:https://www.cnblogs.com/heben/p/7277446.html
Copyright © 2011-2022 走看看