在Spring Boot中,自定义注解的使用主要包括以下几个步骤:
@interface
关键字来完成。例如,你可以定义一个名为@MyCustomAnnotation
的注解,如下所示: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 ""; // 注解的属性值
}
@MyCustomAnnotation
注解:@Service
public class MyService {
@MyCustomAnnotation(value = "This is a custom annotation")
public void myMethod() {
// 方法体
}
}
@Aspect
注解进行标注,并且需要定义一个切点(Pointcut)来指定要拦截的方法。然后,在切面的通知(Advice)方法中,你可以访问和处理注解的信息。例如:import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
import org.aspectj.lang.reflect.MethodSignature;
import org.springframework.stereotype.Component;
@Aspect
@Component
public class MyCustomAnnotationAspect {
@Before("@annotation(MyCustomAnnotation)") // 指定要拦截带有MyCustomAnnotation注解的方法
public void beforeAdvice(JoinPoint joinPoint) {
MethodSignature signature = (MethodSignature) joinPoint.getSignature();
MyCustomAnnotation annotation = signature.getMethod().getAnnotation(MyCustomAnnotation.class);
String value = annotation.value();
System.out.println("Custom annotation value: " + value);
// 在这里添加你想要在方法执行前执行的代码
}
}
@EnableAspectJAutoProxy
注解来实现的:import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.EnableAspectJAutoProxy;
@SpringBootApplication
@EnableAspectJAutoProxy
public class MyApplication {
public static void main(String[] args) {
SpringApplication.run(MyApplication.class, args);
}
}
现在,当你在服务类的方法上使用@MyCustomAnnotation
注解时,切面类中的beforeAdvice
方法将在该方法执行前被调用,并打印出注解的值。你可以根据需要扩展这个示例,添加更多的通知类型(如@After
、@Around
等)来处理注解。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。