Spring~Spring框架AOP的介绍, 实现统一异常处理、统一返回数据格式

本文介绍了如何在Spring框架中利用AOP实现自定义异常处理和统一的返回数据格式。通过创建`DiyException`类并配置`ControllerAdvice`,在发生异常时返回自定义消息。同时,通过实现`ResponseBodyAdvice`接口,确保所有web请求返回的数据遵循统一的`ReturnFormat`格式,从而提高代码的可维护性和用户体验。
摘要由CSDN通过智能技术生成

public DiyException(String message) {

super(message);

}

}

  • 配置web请求返回异常

//访问test12直接返回自定义异常

@RequestMapping(value = “test12”)

public Object test12() throws DiyException {

throw new DiyException(“这是一个自定义异常”);

}

  • 实现@ControllerAdvice统一处理异常

package todayTest.application.interceptor;

import org.springframework.web.bind.annotation.ControllerAdvice;

import org.springframework.web.bind.annotation.ExceptionHandler;

import org.springframework.web.bind.annotation.ResponseBody;

import todayTest.application.modle.DiyException;

/**

  • Created with IntelliJ IDEA.

  • Description: If you don’t work hard, you will a loser.

  • User: Listen-Y.

  • Date: 2020-08-18

  • Time: 10:24

*/

//指名身份, 这是一个拦截Controller中web请求进行统一处理的类

@ControllerAdvice

public class AppControllerAdvice {

//指定处理请求方法中抛出的异常

@ExceptionHandler(DiyException.class)

@ResponseBody

public Object handler(DiyException d) {

return d.getMessage();

}

}

在这里插入图片描述

统一返回数据格式


使用@ControllerAdvice注解实现 并且要实现ResponseBodyAdvice接口 (可以有多个)

  • 创建自定义返回格式

package todayTest.application.modle;

import lombok.Getter;

import lombok.Setter;

import lombok.ToString;

/**

  • Created with IntelliJ IDEA.

  • Description: If you don’t work hard, you will a los

  • 29
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
SpringAOP 全称为 Spring Aspect-Oriented Programming,是 Spring 框架中的一个模块,用于实现面向切面编程。在 SpringAOP 中,我们可以通过定义切点和通知来实现对目标对象的增强。 在平台开发中,我们可以使用 SpringAOP 来解决平台统一异常处理的问题。具体实现步骤如下: 1. 定义异常处理切面 在 SpringAOP 中,我们可以使用 @Aspect 注解来定义切面。在切面类中,我们需要定义一个处理异常的方法,并使用 @AfterThrowing 注解来指定这个方法是用于处理异常的。例如: ```java @Aspect public class ExceptionHandlerAspect { @AfterThrowing(pointcut = "execution(* com.example.*.*(..))", throwing = "ex") public void handleException(Exception ex) { // 处理异常的逻辑 } } ``` 在上述代码中,我们定义了一个名为 ExceptionHandlerAspect 的切面类,并在其中定义了一个名为 handleException 的方法,该方法的参数为 Exception 类型,用于处理异常。我们使用 @AfterThrowing 注解来指定这个方法是用于处理异常的,pointcut 属性用于指定切入点,这里我们使用 execution 表达式来匹配 com.example 包及其子包下的所有方法。 2. 配置 SpringAOPSpring 配置文件中,我们需要配置 SpringAOP。具体来说,我们需要定义一个名为 exceptionHandlerAspect 的 bean,并在其中指定切面的实现类。例如: ```xml <bean id="exceptionHandlerAspect" class="com.example.ExceptionHandlerAspect"/> <aop:config> <aop:aspect ref="exceptionHandlerAspect"> <aop:after-throwing method="handleException" throwing="ex"/> </aop:aspect> </aop:config> ``` 在上述代码中,我们首先定义了一个名为 exceptionHandlerAspect 的 bean,该 bean 的 class 属性指定了切面的实现类。然后,在 aop:config 标签中,我们使用 aop:aspect 标签来定义切面,并在其中指定切面的实现类。在 aop:aspect 标签中,我们使用 aop:after-throwing 标签来指定切面所织入的方法,method 属性用于指定处理异常的方法名,throwing 属性用于指定方法抛出的异常类型。 3. 使用统一异常处理 在业务代码中,当发生异常时,SpringAOP 会自动调用我们定义的异常处理方法。在这个方法中,我们可以根据具体的业务需求来处理异常。例如: ```java @Service public class UserServiceImpl implements UserService { @Override public void addUser(User user) { // 业务逻辑 try { // 执行业务操作 } catch (Exception e) { throw new RuntimeException("添加用户失败!"); } } } ``` 在上述代码中,当执行 addUser 方法时,如果发生异常,SpringAOP 会自动调用我们定义的异常处理方法 handleException,并将异常对象作为参数传入该方法中。在 handleException 方法中,我们可以根据具体的业务需求来处理异常,例如记录日志、发送邮件等。 通过使用 SpringAOP,我们可以实现平台统一异常处理,避免代码中出现大量的 try-catch 代码块,提高代码的可读性和可维护性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值