@Aspect和@ControllerAspect
时间: 2023-11-23 13:56:46 浏览: 31
@Aspect和@ControllerAdvice是Spring Boot中常用的AOP注解,它们的作用分别如下:
@Aspect:用于定义切面,通过在类上添加@Aspect注解,该类就成为了切面。在切面中,可以定义切点和通知等内容,用于实现对目标方法的拦截和增强。
@ControllerAdvice:用于定义全局异常处理器,通过在类上添加@ControllerAdvice注解,该类就成为了全局异常处理器。在全局异常处理器中,可以定义异常处理方法,用于处理系统中抛出的各种异常。
下面是一个简单的示例,演示了如何使用@Aspect和@ControllerAdvice注解:
```java
@Aspect
@Component
public class LogAspect {
@Pointcut("execution(* com.example.demo.controller.*.*(..))")
public void pointcut() {}
@Before("pointcut()")
public void before(JoinPoint joinPoint) {
System.out.println("调用方法:" + joinPoint.getSignature().getName());
}
}
@ControllerAdvice
public class GlobalExceptionHandler {
@ExceptionHandler(Exception.class)
@ResponseBody
public String handleException(Exception e) {
return "系统异常:" + e.getMessage();
}
}
```
在上面的示例中,我们定义了一个LogAspect切面和一个GlobalExceptionHandler全局异常处理器。LogAspect切面用于拦截com.example.demo.controller包下的所有方法,并在方法执行前输出方法名。GlobalExceptionHandler全局异常处理器用于处理系统中抛出的所有异常,并返回异常信息。