自定义注解+aop拼接json响应,有没有啥弊端

博客涉及Java和Spring Boot相关信息技术内容,但具体内容缺失。Java是广泛使用的编程语言,Spring Boot是简化开发的框架,二者结合可高效开发后端应用。

要使用自定义注解AOP实现通用功能的抽取,可以通过以下几个步骤来实现: ### 1. 创建自定义注解 首先,需要定义一个自定义注解,这个注解将用于标记需要执行特定功能的方法。例如,如果想要记录方法执行的日志,可以创建一个名为 `@LogExecution` 的注解。 ```java 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 LogExecution { } ``` ### 2. 创建切面类 接下来,创建一个切面类,该类将包含用于处理带有自定义注解的方法的逻辑。在这个切面中,可以使用 `@Around` 注解来定义环绕通知,它允许在方法调用前后执行特定的逻辑。 ```java import org.aspectj.lang.ProceedingJoinPoint; import org.aspectj.lang.annotation.Around; import org.aspectj.lang.annotation.Aspect; import org.springframework.stereotype.Component; @Aspect @Component public class LoggingAspect { @Around("@annotation(LogExecution)") // 匹配所有带有@LogExecution注解的方法 public Object logExecutionTime(ProceedingJoinPoint joinPoint) throws Throwable { long start = System.currentTimeMillis(); Object proceed = joinPoint.proceed(); // 执行原方法 long executionTime = System.currentTimeMillis() - start; System.out.println(joinPoint.getSignature() + " executed in " + executionTime + "ms"); return proceed; } } ``` ### 3. 在业务代码中使用自定义注解 现在可以在任何需要记录执行时间的方法上使用 `@LogExecution` 注解。当这些方法被调用时,切面将自动执行日志记录逻辑。 ```java import org.springframework.stereotype.Repository; @Repository public class BookDao { @LogExecution public void save() { System.out.println("book dao save ..."); } public void update() { System.out.println("book dao update ..."); } } ``` ### 4. 配置Spring AOP 确保你的Spring Boot项目已经包含了AOP的依赖,例如在Maven项目的 `pom.xml` 文件中添加以下依赖: ```xml <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-aop</artifactId> </dependency> ``` 通过以上步骤,就可以利用自定义注解AOP来抽取并实现通用的功能,比如日志记录、性能监控等。这种方式不仅提高了代码的复用性,还减少了业务逻辑中的冗余代码,使得代码更加整洁和易于维护[^5]。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值