使用aop监听注解
时间: 2023-07-23 18:09:05 浏览: 156
在Spring Boot中,可以使用AOP(面向切面编程)技术来监听注解的使用情况。具体步骤如下:
1. 定义注解
首先,需要定义一个注解,例如:
```java
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface MyAnnotation {
// ...
}
```
在上面的示例中,我们定义了一个名为`MyAnnotation`的注解。
2. 定义切面
然后,需要定义一个切面来监听注解的使用情况。例如:
```java
@Aspect
@Component
public class MyAspect {
@Before("@annotation(MyAnnotation)")
public void beforeMethod(JoinPoint joinPoint) {
System.out.println("方法执行前:" + joinPoint.getSignature().getName());
}
@After("@annotation(MyAnnotation)")
public void afterMethod(JoinPoint joinPoint) {
System.out.println("方法执行后:" + joinPoint.getSignature().getName());
}
}
```
在上面的示例中,我们使用`@Aspect`注解标记该类为切面类。然后,我们定义了一个`beforeMethod()`方法和一个`afterMethod()`方法,分别在方法执行前和执行后输出日志。这两个方法都使用`@Before`和`@After`注解,表示它们会在目标方法执行前和执行后被调用。`@annotation(MyAnnotation)`表示只有使用了`@MyAnnotation`注解的方法才会被拦截。
3. 在目标方法上使用注解
最后,需要在目标方法上使用注解,例如:
```java
@MyAnnotation
public void myMethod() {
// ...
}
```
在上面的示例中,我们在`myMethod()`方法上使用了`@MyAnnotation`注解。
当程序运行时,如果调用了带有`@MyAnnotation`注解的方法,切面中定义的`beforeMethod()`方法和`afterMethod()`方法就会被执行,输出相应的日志。
需要注意的是,为了使AOP生效,需要在启动类上添加`@EnableAspectJAutoProxy`注解,例如:
```java
@SpringBootApplication
@EnableAspectJAutoProxy
public class MyApp {
// ...
}
```
这样,Spring Boot就会自动扫描定义的切面类,并将其应用到目标方法上。
阅读全文