慕课网完整教程
以下教程完整源码
@Valid 表单验证
1 | //控制器 |
AOP 面向切面编程思想
- 图解:将通用业务从具体逻辑中分离出来
AOP记录http请求
- @After
- @Before
- @AfterReturning
统一异常处理
自己写返回格式
- 新建Result类
1 | public class Result<T> { |
- 在controller类使用
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22public Object insert(@Valid Gril g1, BindingResult bindingResult){
if(bindingResult.hasErrors()){
// System.out.println(bindingResult.getFieldError().getDefaultMessage());
//改进 统一异常处理 @Autowrite引入报错
Result result=new Result();
result.setCode(1);
result.setMsg(bindingResult.getFieldError().getDefaultMessage());
result.setData(null);
return result;
}
Gril g=new Gril();
g.setAge(g1.getAge());
g.setCupSize(g1.getCupSize());
Result result=new Result();
result.setCode(0);
result.setMsg("成功");
result.setData(grilRepository.save(g));
return result;
}
把上面的代码用工具类ResultUtil 封装
- 实现年龄判断并做相应处理 统一异常返回格式。
- ResultUtil.err(1,”未成年禁止入内”);
- @ControllerAdvance
- @ExceptionHandel
- @ResponseBody
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45//新建工具类
public class ResultUtil {
public static Result success(Object object){
Result result=new Result();
result.setCode(0);
result.setMsg("成功");
result.setData(object);
return result;
}
public static Result success(){
return success(null);
}
public static Result err(Integer code,String msg){
Result result=new Result();
result.setCode(code);
result.setMsg(msg);
return result;
}
}
//GrilService
public void getAge(Integer id)throws Exception{
Gril gril=grilRepository.getOne(id);
if(gril.getAge()<10){
throw new Exception("你在上小学");
}else if(gril.getAge()<30){
throw new Exception("你在上初中");
}
}
//Controller
"/getAge/{id}") (value =
public void getAge(@PathVariable("id")Integer id)throws Exception{
grilService.getAge(id);
}
//ExceptionHandel
public class ExceptionHandel {
//获取具体Controller类抛出的异常
(value = Exception.class)
public Result handel(Exception e){
return ResultUtil.err(100,e.getMessage());
}
}
在改进 自定义异常GrilException
1 | public class GrilException extends RuntimeException{ |
在改进 把错误码方法enum中管理
1 | //ResultEnum |
单元测试
- 对api接口(Mappering(url)) /service/ controller方法进行测试
- @RunWith
- @SpringBootTest
- @AutoConfigureMockMvc
1 | (SpringRunner.class) |
多个单元测试
- 项目打包时会自动运行测试类 有错则打包失败