编程小白入门分享三:Spring AOP统一异常处理
Spring AOP统一异常处理
简介
在Controller层,Service层,可能会有很多的try catch代码块。这将会严重影响代码的可读性、“美观性”。怎样才可以把更多的精力放在业务代码的开发,同时代码变得更加简洁?既然业务代码不显式地对异常进行捕获、处理,而异常肯定还是处理的,不然系统岂不是动不动就崩溃了,所以必须得有其他地方捕获并处理这些异常。统一异常处理应运而生,优雅的处理各种异常。本文主要介绍的是用切面方式进行统一异常处理。
目录结构

接下来逐一介绍作用
annotation包
这个包写一个注解的接口,定义全局异常注解,就是最后打在需要异常处理的方法上的注解
@Target({ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface GlobalExceptionLog {
Class<? extends Throwable>[] value() default {};
}
aspect包
定义处理上述注解的切面
@Component
@Aspect
public class GlobalExceptionAspect {
@Resource
private GlobalExceptionHandler globalExceptionHandler;//全局异常处理
//定义执行这个切面的注解
@Pointcut("@annotation(com.bosssoft.bes.base.common.exception.logging.annotation.GlobalExceptionLog)")
public void myExceptionHandler() {
}
//当抛出异常后执行的方法
@AfterThrowing(throwing = "ex",pointcut = "myExceptionHandler()")
public void afterThrowing(JoinPoint joinPoint,BaseException ex){
...
//全局异常处理
}
}
enums包
定义枚举类,用于自定义异常
public enum ResultEnum {
SUCCESS(000000,"成功"),
SYSTEM_ERROR(100000,"系统错误"),
;
private int code;
private String message;
private ResultEnum(int code, String message){
this.code = code;
this.message = message;
}
public int getCode() {
return code;
}
public String getMsg() {
return message;
}
}
exception包
自定义异常类
public class BusinessException extends BaseException {
public BusinessException(ResultEnum resultEnum) {
super(resultEnum);
}
public BusinessException(String message, int code) {
super(message, code);
}
}
handler包
全局异常处理
@ControllerAdvice//控制层增强
public class GlobalExceptionHandler {
@ExceptionHandler(value = Exception.class)
@ResponseBody
public CommonResponse handle(Exception e){
//执行方法,CommonResponse是自定义的应答类型,用其他也可以
...
}
编程小白入门分享三:Spring AOP统一异常处理的更多相关文章
- Spring AOP统一异常处理
1.添加依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId> ...
- 编程小白入门分享五:Vue的自定义组件
前言 上篇博客简单介绍了vue,本篇博客要在对vue有一定了解后,才可以比较容易理解自定义组件.想要封装好一个组件,一定要熟练掌握这三个技能,父组件 -> 子组件传值(props).子组件 -& ...
- 编程小白入门分享四:Vue的安装及使用快速入门
一.VUE简介 vue是一个JavaMVVM库,是一套用于构建用户界面的渐进式框架,是初创项目的首选前端框架.它是以数据驱动和组件化的思想构建的,采用自底向上增量开发的设计.它是轻量级的,它有很多独立 ...
- 编程小白入门分享一:git的最基本使用
git简介 引用了网上的一张图,这张图清晰表达git的架构.workspace是工作区,可以用编辑器直接编辑其中的文件:Index/Stage是暂存区,编辑后的文件可以添加到(add)暂存区:Repo ...
- 编程小白入门分享二:IntelliJ IDEA的入门操作小知识
idea简介 IDEA 全称 IntelliJ IDEA,是java编程语言开发的集成环境.IntelliJ在业界被公认为最好的java开发工具之一,尤其在智能代码助手.代码自动提示.重构.J2EE支 ...
- SpringBoot入门系列(十一)统一异常处理的实现
前面介绍了Spring Boot 如何整合定时任务已经Spring Boot 如何创建异步任务和定时任务.不清楚的朋友可以看看之前的文章:<Spring Boot 入门系列文章> 接下来主 ...
- Spring MVC 统一异常处理
Spring MVC 统一异常处理 看到 Exception 这个单词都心慌 如果有一天你发现好久没有看到Exception这个单词了,那你会不会想念她?我是不会的.她如女孩一样的令人心动又心慌,又或 ...
- Spring入门(三)— AOP注解、jdbc模板、事务
一.AOP注解开发 导入jar包 aop联盟包. aspectJ实现包 . spring-aop-xxx.jar . spring-aspect-xxx.jar 导入约束 aop约束 托管扩展类和被扩 ...
- Spring入门(十):Spring AOP使用讲解
1. 什么是AOP? AOP是Aspect Oriented Programming的缩写,意思是:面向切面编程,它是通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术. 可以认为AOP是 ...
随机推荐
- mysql 5.7开启sql日志的配置
今天把数据库换成了5.7的,想查通过sql日志定位下问题,但是发现和以前的方式不一样了,特意记录下来 通过开启mysql的日志功能,可以记录所有别执行过的sql语句记录,便于维护数据库数据. 在数据库 ...
- Guide of Apache Directory Studio
Default User and Password admin secret
- K8S+GitLab+.net core-自动化分布式部署-3
K8S+GitLab-自动化分布式部署ASP.NET Core(三) 更新镜像版本并部署到K8S上 一.介绍 前一篇,介绍了ASP.NET Core部署到K8S上,下面介绍我们在发布新一版本中怎么 ...
- 1.3 LVM条带化
1.什么是条带化 磁盘冲突:当多个进程同时访问一个磁盘时,可能会出现磁盘冲突.磁盘系统对访问次数(每秒的IOPS)和数据传输速率(读写速率,TPS)有限制.当达到这些限制时,后面需要访问磁盘的进程就需 ...
- Java基础知识点总结(三)
figure:first-child { margin-top: -20px; } #write ol, #write ul { position: relative; } img { max-wid ...
- Ideaui和WebStrom2019最新版自动生成破解码
http://idea.medeming.com/jet/ 直接点击下载 6ZUMD7WWWU-eyJsaWNlbnNlSWQiOiI2WlVNRDdXV1dVIiwibGljZW5zZWVOYW1l ...
- SqlServer调用OPENQUERY函数远程执行增删改查
/* OPENQUERY函数,远程执行数据库增删改查 关于OPENQUERY函数第二个参数不支持拼接变量的方案 方案1:将OPENQUERY语句整个拼接为字符串,再用EXEC执行该字符串语句 方案2: ...
- Shallow copy and Deep copy
Shallow copy and Deep copy 第一部分: 一.来自wikipidia的解释: Shallow copy One method of copying an object is t ...
- WinRAR捆绑木马
准备好木马文件 server.exe 准备一个小游戏 趣味数学计算 压缩 创建自解压格式压缩文件 自解压选项设置 解压路径设置 设置程序 模式设置 压缩完成 使用 开始玩游戏
- 通过cmd命令将jar放到maven仓库
如:将jar包直接拷贝到mave仓库的文件夹是不能直接使用的,需要通过cmd命令将jar生产maven可用的 mvn install:install-file -Dfile=iTextAsian-1. ...