springboot 2.5.4的aop使用代码
时间: 2024-02-21 20:59:43 浏览: 78
SpringBoot 整合 AOP完整源码
好的,以下是一个简单的 Spring Boot 2.5.4 AOP 的使用示例代码:
1. 创建一个切面类(Aspect Class):
```java
@Aspect
@Component
public class MyAspect {
@Before("execution(* com.example.demo.controller.*.*(..))")
public void beforeAdvice(JoinPoint joinPoint) {
System.out.println("Before method:" + joinPoint.getSignature());
}
@After("execution(* com.example.demo.controller.*.*(..))")
public void afterAdvice(JoinPoint joinPoint) {
System.out.println("After method:" + joinPoint.getSignature());
}
}
```
2. 在 Spring Boot 的配置类中启用 AOP:
```java
@Configuration
@EnableAspectJAutoProxy
public class AppConfig {
}
```
3. 在控制器(Controller)中使用 AOP:
```java
@RestController
@RequestMapping("/api")
public class MyController {
@GetMapping("/hello")
@MyAnnotation
public String hello() {
return "Hello, World!";
}
}
```
4. 创建一个自定义注解(Annotation):
```java
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface MyAnnotation {
}
```
这个示例中,我们创建了一个切面类 `MyAspect`,并在其中定义了 `beforeAdvice` 和 `afterAdvice` 两个通知(Advice),用于在控制器中的方法执行前后打印日志。我们使用 `@Aspect` 注解将该类标记为切面类,并使用 `@Before` 和 `@After` 注解分别定义了 `beforeAdvice` 和 `afterAdvice` 两个通知。通知方法中使用了 `JoinPoint` 类型的参数来获取连接点(Join Point)的信息,从而进行适当的处理。
我们在 Spring Boot 的配置类 `AppConfig` 中启用了 AOP,使用了 `@EnableAspectJAutoProxy` 注解开启了自动代理功能。
在控制器中,我们使用了 `@MyAnnotation` 自定义注解来标记 `hello` 方法,这样我们就可以在切面类中通过 `@MyAnnotation` 来匹配该方法,从而进行相应的处理。
需要注意的是,我们使用了 `execution(* com.example.demo.controller.*.*(..))` 表达式来匹配控制器中的所有方法,其中 `com.example.demo.controller` 是控制器所在的包名。这个表达式的意思是,匹配该包中的所有类的所有方法,并且方法的参数可以是任意类型、任意个数。你可以根据实际情况来修改这个表达式,以达到更精确的匹配。
这就是一个简单的 Spring Boot 2.5.4 AOP 的使用示例代码。希望能对你有所帮助!
阅读全文