Spring-基于注解的AOP快速入门案例

问题引出
Spring 的AOP纯注解配置是官方主推的模式,它不仅简化了配置流程,而且用起来也特别的方便,下面我们在xml配置的基础上修改一下纯注解配置方式


实现步骤
第一步:maven坐标需要增加AOP的实现包:aspectjweaver

 
    
        org.springframework
        spring-context
        5.0.2.RELEASE
    
    
    
        org.aspectj
        aspectjweaver
        1.8.9
    
    
    
        org.springframework
        spring-test
        5.0.2.RELEASE
    
    
    
        junit
        junit
        4.12
    

第二步:目标类和切面类的准备

public class UserService{
    void save();
}
@Service("userService")
public class UserServiceImpl {
    public void save(){
        System.out.println("PersonList is running");
    }
}

切面类

import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
import org.springframework.stereotype.Component;

//声明当前类是切面类:把切入点和通知,在这个类里进行织入,当前类就成为了一个切面类
@Aspect
@Component("myAdvice1")
public class MyAdvice1 {
    @Around("execution(* com.gg.service..*.*(..))")
    public Object around(ProceedingJoinPoint pjp) throws Throwable {
        System.out.println("环绕前置通知");
        Object proceed = pjp.proceed(pjp.getArgs());
        System.out.println("环绕后置通知");
        return proceed;
    }
    @Before("execution(* com.gg.service..*.*(..))")
    public void before(){
        System.out.println("前置通知");
    }
}

第三步:纯注解开发,可以使用配置类代替applicationContext.xml,配置类如下:

@Configuration //标记当前类是:配置类
@ComponentScan(basePackage="com.gg.service") //配置注解扫描
@EnableAspectJAutoProxy //开启AOP自动代理
public class AnnotationAop {
}

第四步:测试

@Test
public void AopTest() {
 AnnotationConfigApplicationContext appConfig1 = new AnnotationConfigApplicationContext(AnnotationAop.class);
        UserService userService = appConfig1.getBean(userService.class);
        userService.savel();
}

测试结果
Spring-基于注解的AOP快速入门案例_第1张图片

你可能感兴趣的:(Spring,spring,aop)