spring boot 自定义注解切面简单样例

本文介绍如何在Spring Boot项目中利用AOP实现方法级别的权限控制。通过定义自定义注解和切面,可以灵活地控制特定方法的执行与否。文章详细展示了从引入依赖到定义注解、切面直至具体使用的全过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. 导入jar

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

2. 定义注解

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

@Target({ElementType.METHOD})//作用范围  方法
@Retention(RetentionPolicy.RUNTIME)//生命周期 代码运行时
public @interface Pass {
    boolean value() default false ;
}

3. 定义切面

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

@Aspect//切面标识
@Component//组件bean标识
@Order(100)//优先级 值越大越高
public class PassAspect {

    @Around("@annotation(pass)")//环绕型切面
    public Object invoked(ProceedingJoinPoint pjp, Pass pass) throws Throwable {
        if(pass.value()){
           pjp.proceed();
        }
        throw new RuntimeException("不通过");
    }
}

4. 使用样例

import org.springframework.stereotype.Component;

@Component//组件bean标识
public class Test {

    @Pass(true)
    void foo(){}

    @Pass()
    void foo1(){}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值