Spring Boot是很优秀的框架,它的出现简化了新Spring应用的初始搭建以及开发过程,大大减少了代码量,目前已被大多数企业认可和使用。这个专栏将对Spring Boot框架从浅入深,从实战到进阶,不但我们要懂得如何去使用,还要去剖析框架源码,学习其优秀的设计思想。汇总目录链接:【Spring Boot实战与进阶】学习目录
注解 | 释义 |
---|---|
ExceptionHandler | 方法注解,作用于Controller 级别,ExceptionHandler注解为一个Controler定义一个异常处理器 |
ControllerAdvice | 类注解,作用于 整个Spring 工程,ControllerAdvice注解定义了一个全局的异常处理器 |
需要注意的是,ExceptionHandler 的优先级比 ControllerAdvice 高,即优先让 ExceptionHandler 标注的方法处理。
1、全局异常处理
/**
* 全局异常处理
*/
@ControllerAdvice
public class GlobalExceptionHandler {
@ExceptionHandler(Exception.class)
@ResponseStatus(code = HttpStatus.NOT_FOUND)
public String e404() {
return "error/404.html";
}
@ExceptionHandler(RuntimeException.class)
@ResponseStatus(code = HttpStatus.INTERNAL_SERVER_ERROR)
public String e500() {
return "error/500.html";
}
}
2、局部异常处理
@Controller
public class UserController {
/**
* 局部异常处理
*/
@ExceptionHandler(BusinessException.class)
public String exPage(Exception ex, Model model) {
model.addAttribute("ex", ex);
return "/error/business.html";
}
}
Spring Boot的默认资源路径,可查看spring-boot-autoconfigure包的ResourceProperties类。
private static final String[] CLASSPATH_RESOURCE_LOCATIONS = new String[]{
"classpath:/META-INF/resources/",
"classpath:/resources/",
"classpath:/static/",
"classpath:/public/"};