一、自定义错误页面
springBoot默认的处异常的机制:SpringBoot默认的已经提供了一套处理异常的机制。一旦程序中出现了异常SpringBoot会像/error的url发送请求。在springboot中提供了一个叫BasicExceptionController来处理/error请求,然后跳转到默认显示异常的页面来展示异常信息。
如果我们需要将所有的异常同一跳转到自定义的错误页面,需要在src/main/resources/templates目录下创建errror.html(一定要是这个名字)
二、@ExceptionHandler注解处理异常(只能在本controller中使用)
@Controller
public class NewErrorController {
@ExceptionHandler(value= {java.lang.ArithmeticException.class})
public ModelAndView arithmeticExceptionHandler(Exception e) {
ModelAndView mv = new ModelAndView();
mv.addObject("error", e.toString());
mv.setViewName("error");
return mv;
}
}
三、@ControllerAdvice+@ExceptionHander注解处理异常
需要创建一个能够处理异常的全局异常类。在该类上添加@ControllerAdvice注解
四、配置SimpleMappingExceptionResolver处理异常(无法传递错误信息,只做映射)
@Configuration
public class GlobalException {
@Bean
public SimpleMappingExceptionResolver getSimpleMappingExceptionResolver() {
SimpleMappingExceptionResolver resolver = new SimpleMappingExceptionResolver();
Properties mappings = new Properties();
/**
* 参数一:异常的类型,注意必须是异常类型的全名
* 参数二:视图名称
*/
mappings.put("java.lang.ArithmeticException", "ok");
//设置异常与视图映射信息
resolver.setExceptionMappings(mappings);
return resolver;
}
}
五、自定义HandlerExceptionResolver类处理异常
在全局异常处理类中实现HandleExceptionResolver接口
@Configuration
public class GlobalException implements HandlerExceptionResolver {
@Override
public ModelAndView resolveException(HttpServletRequest request, HttpServletResponse response, Object handler,
Exception ex) {
ModelAndView mv = new ModelAndView();
//判断不同异常类型,做不同视图跳转
if(ex instanceof ArithmeticException) {
mv.setViewName("ok");
}
//比第四种多了
mv.addObject("error", ex.toString());
return null;
}
}
junit单元测试
@RunWith(SpringJUnit4ClassRunner.class)
@SpringBootTest(classes= {App.class})
public class UserServiceTest {
}
@RunWith:启动器
SpringJUnit4ClassRunner.class,让junit与spring环境进行整合
@SpringBootTest(classes= {App.class}) 1.当前类为springBoot的测试类
@SpringBootTest(classes= {App.class}) 2.加载SpringBoot启动类,启动SpringBoot
热部署:
spring-boot-devtools
通常会在配置加<optional>true</optional>,如果有项目继承这个项目,不会往下传递。