spring 注解切面aop案例

java | 2022-03-25 17:49:52

1.场景

实现aop编程,在方法上加上自定义的注解,就可以切面运行对应方法,实现在被加注解的方法调用的前后 都运行指定的方法,比如权限验证。

2.添加依赖

<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-aop</artifactId>
        </dependency>

2.编写注解

/**
 * @author houyong
 * @date 2022/3/14 11:59
 */
@Target({ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
public @interface Validator {

}

3.切面方法

/**
 * @author houyong
 * @date 2022/3/14 12:03
 */
@Aspect
@Component
public class Interceptor {

    @Autowired
    SysLicenseChecker sysLicenseChecker;

    //切点
    @Pointcut("@annotation(Validator) || @within(Validator)")
    public void cut() {}

    //前置
    @Before("cut()")
    public void beforePointcut(JoinPoint joinPoint) throws Exception {
        sysLicenseChecker.checkLicenseUserNum();
    }

//    //后置
//    @After("pointCut()")
//    public void afterPointcut(JoinPoint joinPoint) {}
//
//    //环绕
//    @Around("pointCut()")
//    public void aroundPointcut(ProceedingJoinPoint proceedingJoinPoint) throws Throwable {proceedingJoinPoint.proceed();}
//
//    //返回之后
//    @AfterReturning("pointCut()")
//    public void afterReturningPointcut(JoinPoint joinPoint) {}
//
//    //报错时
//    @AfterThrowing("pointCut()")
//    public void afterThrowingPointcut(JoinPoint joinPoint) {}



}

这里需要着重注意,如果你有arround环绕切面,一定要proceedingJoinPoint.proceed,要不然执行不到方法体里面去。

4.测试

	@Validator
	public Result loginPassword() {
		
	}

 

 


       

 

 

登录后即可回复 登录 | 注册
    
关注编程学问公众号