首页 > 代码库 > SpringAOP学习第一天 @Pointcut注解

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

 

SpringAOP学习第一天 @Pointcut注解