Live2D

spring boot如何自定义注解

总共分三步:

1、创建一个注解

复制代码
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 MyCustomAnnotation {
    String value() default ""; // 定义一个属性
}
复制代码

2、创建一个使用注解的类

复制代码
import org.springframework.stereotype.Service;
 
@Service
public class MyService {
 
    @MyCustomAnnotation("someValue")
    public void myMethod() {
        // 方法实现
    }
}
复制代码

3、注解处理

复制代码
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Pointcut;
import org.springframework.stereotype.Component;
 
@Aspect
@Component
public class MyCustomAnnotationAspect {
 
    @Pointcut("@annotation(MyCustomAnnotation)")
    public void myCustomAnnotationPointcut() {
    }
 
    @Around("myCustomAnnotationPointcut()")
    public Object around(ProceedingJoinPoint joinPoint) throws Throwable {
        // 在目标方法执行前执行的逻辑
        System.out.println("Before method execution");
        
        Object result = joinPoint.proceed(); // 执行目标方法
        
        // 在目标方法执行后执行的逻辑
        System.out.println("After method execution");
        
        return result;
    }
}
复制代码

 

posted @   -涂涂-  阅读(553)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
历史上的今天:
2022-05-20 linux mysql安装(离线)
2022-05-20 mysql 数据位置迁移到其他盘
2022-05-20 mysql安装问题小结sock文件和pid文件
2019-05-20 mapreduce 变量共享
2019-05-20 mapreduce 函数入门 三
2019-05-20 mapreduce 函数入门 二
2019-05-20 mapreduce 函数入门 一
点击右上角即可分享
微信分享提示