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
  • 相关阅读:
    2013年10月17日 搬出来了
    如何与领导相处
    WEB系统开发
    C++ 常用术语(后续补充)
    C++ 构造函数放置默认转换explicit关键字(2)
    工作与生活
    C++类型转化分析(1)
    (一)win7下cocos2d-x 21 + vs2010
    为了生活
    iOS
  • 原文地址:https://www.cnblogs.com/heben/p/7277446.html
Copyright © 2011-2022 走看看