java中自定义注解

文章目录

自定义一个注解

java 复制代码
// 元注解:定义注解的行为
@Retention(RetentionPolicy.RUNTIME) // 注解在运行时保留,可通过反射读取
@Target(ElementType.METHOD)        // 注解只能用于方法上
public @interface LogExecution {
    String value() default "Method executed"; // 成员变量(带默认值)
}

注解要做的逻辑

如果你不是 spring web 项目,你可能需要手动实现注解的处理逻辑

如果你是 spring 的 web 项目,其中一半会引入 spring-boot-starter-aop 依赖,其中含有 aspect 相关注解使用,因此你可以使用 aop 代码来实现注解逻辑

java 复制代码
@Aspect
@Component
public class LoggingAspect {
    @Around("@annotation(logExecution)") // 匹配带有 @LogExecution 的方法
    public Object logExecutionTime(ProceedingJoinPoint joinPoint, LogExecution logExecution) throws Throwable {
        long start = System.currentTimeMillis();

        // 执行目标方法
        Object result = joinPoint.proceed();

        long duration = System.currentTimeMillis() - start;
        System.out.println("【日志】" + logExecution.value() + ",耗时: " + duration + "ms");
        return result;
    }
}
  • @Before:方法执行前。
  • @After:方法执行后。
  • @AfterReturning:方法成功返回后。
  • @AfterThrowing:方法抛出异常后。
  • @Around:环绕方法执行(可自定义逻辑)

使用自定义注解

java 复制代码
@Service
public class UserService {
    @LogExecution("创建用户")
    public User createUser(String name) {
        return new User(name);
    }
}
相关推荐
小松加哲12 分钟前
Spring MVC 核心原理全解析
java·spring·mvc
Ulyanov32 分钟前
《PySide6 GUI开发指南:QML核心与实践》 第二篇:QML语法精要——构建声明式UI的基础
java·开发语言·javascript·python·ui·gui·雷达电子对抗系统仿真
码界筑梦坊35 分钟前
357-基于Java的大型商场应急预案管理系统
java·开发语言·毕业设计·知识分享
云烟成雨TD1 小时前
Spring AI Alibaba 1.x 系列【31】集成 Studio 模块实现可视化 Agent 调试
java·人工智能·spring
014-code1 小时前
Spring Data JPA 实战指南
java·spring
安小牛1 小时前
Android 开发汉字转带声调的拼音
android·java·学习·android studio
聚美智数1 小时前
企业实际控制人查询-公司实控人查询
android·java·javascript
zb200641201 小时前
SpringBoot详解
java·spring boot·后端
AI人工智能+电脑小能手2 小时前
【大白话说Java面试题】【Java基础篇】第7题:HashMap的get流程是什么
java·后端·面试·哈希算法·散列表·hash-index·hash
我头发多我先学2 小时前
C++ 模板全解:从泛型编程初阶到特化、分离编译进阶
java·开发语言·c++