SpringBoot進階課程
阿新 • • 發佈:2018-11-28
SpringBoot進階課程
Web進階
@Valid 註解
用於驗證資訊是否符合要求,直接加註解於變數之前。所屬包為:javax.validation.Valid。
- 在Girl的實體類中的新增驗證的資訊要求
1//限制年齡必須達到18歲,Min代表最小值,若當age小於最小值就顯示提示message
2@Min(value = 18,message = "未成年禁止入內")
3private Integer age;
- 在controller層的方法的要校驗的引數上新增@Valid註解,並且需要傳入BindingResult物件,用於獲取校驗失敗情況下的反饋資訊
1@PostMapping(value = "/girls")
2public Girl girlAdd(@Valid Girl girl, BindingResult bindingResult){
3
4 //驗證是否有錯,如果有錯就輸出錯誤資訊
5 if(bindingResult.hasErrors()){
6 System.out.println(bindingResult.getFieldError().getDefaultMessage());
7return null;
8 }
9
10 girl.setCupSize(girl.getCupSize());
11 girl.setAge(girl.getAge());
12
13 return girlRepository.save(girl);
14
15}上述兩段程式碼最終實現效果:
當驗證資訊小於18時,girlAdd方法將錯誤反饋給bindingResult
最後bindingResult.getFieldError().getDefaultMessage()獲取錯誤資訊message
AOP統一處理請求日誌
- 面向切面--AOP(Aspect Oriented Programming)是一種程式設計正規化,與語言無關,是一種程式設計思想。
- 將通用邏輯從業務邏輯中分離出來
1@Aspect
2@Component
3public class HttpAspect {
4
5 private final static Logger logger = LoggerFactory.getLogger(HttpAspect.class);
6
7 @Pointcut("execution(public * com.imooc.controller.GirlController.*(..))")
8 public void log() {
9 }
10
11 @Before("log()")
12 public void doBefore(JoinPoint joinPoint) {
13 ServletRequestAttributes attributes = (ServletRequestAttributes)
14 RequestContextHolder.getRequestAttributes();
15 HttpServletRequest request = attributes.getRequest();
16 //url
17 logger.info("url={}", request.getRequestURL());
18 //method
19 logger.info("method={}", request.getMethod());
20 //ip
21 logger.info("ip={}", request.getRemoteAddr());
22 //類方法
23 logger.info("class_method={}", joinPoint.getSignature().getDeclaringTypeName() + "." + joinPoint.getSignature().getName());
24 //引數
25 logger.info("args={}", joinPoint.getArgs());
26 }
27 @After("log()")
28 public void doAfter() {
29 logger.info("222222222222");
30 }
31
32 @AfterReturning(returning = "object", pointcut = "log()")
33 public void doAfterReturning(Object object) {
34 logger.info("response={}", object.toString());
35 }
36}
關於上述程式碼的詳細講解可參考廖師兄,真的十分清晰!AOP是種思想,更應該應用於平日裡。之後還有兩節課,講了“統一異常處理”和“單元測試”,在“統一異常處理”中,通過列舉型別、和自定義異常更方便管理程式碼和專案,值得多看幾遍。