springboot学习小记_2
2018-01-08 16:27
197 查看
需要结合《springboot学习小记_1》里面的代码
1。使用@Valid表单验证
如:保存的Girl对象age必须大于18
a)在Girl这个对象的age属性上添加注解:
@Min(value = 18,message = "你的年龄未满18!")//校验这个属性,最小为value值,否则提示message
b)修改保存对象的方法为:
1.1 @JsonIgnore的使用:
在需要转换成json数据的bean对象的某个属性上使用,会使转换后的json忽略这个属性
1.2 @JsonFormat的使用
如某个bean对象的属性是时间戳,可注解:@JsonFormat(pattern="yyyy-MM-dd hh:mm:ss a",locale="zh",timezone="GMT+8")
转换成的Json就会是格式化后的时间格式
1.3 @JsonInclude的使用
如需要返回的Json数据里面,属性值为空时不返回这个属性,可在这个属性上注解:@JsonInclude(Include.NON_NULL)
2。使用AOP处理请求
A)AOP统一处理请求日志
1)AOP(面向切面编程,Aspect Oriented Programming)是一种编程范式,与语言无关,是一种程序设计思想
2)OOP(面向对象编程,Object Oriented Programming)
3)POP(面向过程编程,Procedure Oriented Programming)
B)需要在maven中添加依赖
3。统一异常处理
4。单元测试
1。使用@Valid表单验证
如:保存的Girl对象age必须大于18
a)在Girl这个对象的age属性上添加注解:
@Min(value = 18,message = "你的年龄未满18!")//校验这个属性,最小为value值,否则提示message
b)修改保存对象的方法为:
@PostMapping(value = "/girls2") public Girl girlAdd2(@Valid Girl girl, BindingResult bindingResult){//@Valid表示需要验证,BindingResult用来存放对象是否通过校验的通知结果 if(bindingResult.hasErrors()){ System.out.println(bindingResult.getFieldError().getDefaultMessage()); return null; } girl.setAge(girl.getAge()); girl.setCupSize(girl.getCupSize()); return girlRepository.save(girl); }
1.1 @JsonIgnore的使用:
在需要转换成json数据的bean对象的某个属性上使用,会使转换后的json忽略这个属性
1.2 @JsonFormat的使用
如某个bean对象的属性是时间戳,可注解:@JsonFormat(pattern="yyyy-MM-dd hh:mm:ss a",locale="zh",timezone="GMT+8")
转换成的Json就会是格式化后的时间格式
1.3 @JsonInclude的使用
如需要返回的Json数据里面,属性值为空时不返回这个属性,可在这个属性上注解:@JsonInclude(Include.NON_NULL)
2。使用AOP处理请求
A)AOP统一处理请求日志
1)AOP(面向切面编程,Aspect Oriented Programming)是一种编程范式,与语言无关,是一种程序设计思想
2)OOP(面向对象编程,Object Oriented Programming)
3)POP(面向过程编程,Procedure Oriented Programming)
B)需要在maven中添加依赖
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-aop</artifactId> </dependency>C)创建切面日志类
package com.example.demo.aspect; import org.aspectj.lang.JoinPoint; import org.aspectj.lang.annotation.AfterReturning; import org.aspectj.lang.annotation.Aspect; import org.aspectj.lang.annotation.Before; import org.aspectj.lang.annotation.Pointcut; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Component; import org.springframework.web.context.request.RequestContextHolder; import org.springframework.web.context.request.ServletRequestAttributes; import javax.servlet.http.HttpServletRequest; /** * Created by admin on 2017/12/21. */ @Aspect @Component public class HttpAspect { private final static Logger logger= LoggerFactory.getLogger(HttpAspect.class);//org.slf4j.Logger:spring自带的日志框架 @Pointcut("execution(public * com.example.demo.controller.GirlController.*(..))") public void pointcut(){} @Before("execution(public * com.example.demo.controller.GirlController.*(..))") public void log(JoinPoint joinPoint){ // System.out.printf("打开方法"); logger.info("kwkwkwkkwkwkwkww"); ServletRequestAttributes attributes= (ServletRequestAttributes) RequestContextHolder.getRequestAttributes(); HttpServletRequest request=attributes.getRequest(); logger.info("url={}",request.getRequestURL()); logger.info("class_method={}",joinPoint.getSignature().getDeclaringTypeName()+"."+joinPoint.getSignature().getName());//类名+类方法 } /** * 输出返回的数据 * @param object */ @AfterReturning(returning = "object",pointcut = "poincut()") public void doAfterReturnning(Object object){ logger.info("response={}",object); } }
3。统一异常处理
4。单元测试
相关文章推荐
- 函数指针学习小记
- 树的重心学习小记 Poj 1655 Balancing Act
- HTML学习小记5
- springboot 系统学习3 mybatis
- C学习小记
- SpringBoot学习——No.2
- 2013/9/5学习小记
- ExecutorService学习小记
- SpringBoot学习:Spring Boot使用FastJson解析JSON数据
- quest3D学习小记2
- (2014.06.30-2014.07.6)七天的学习小记
- Windows学习小记
- 设计模式学习小记-序
- SpringBoot学习eclipse-mybatis逆向生成工具
- SpringBoot 入门学习
- puppet 学习小记
- oracle学习小记1——日期的加减及截取字符串
- shtml学习,Tomcat配置SSI,及语法指令小记
- C#学习小记6 关于构造器多载及个人对多载的感受
- SpringBoot学习遇到的问题(1) - 配置文件有日志的debug模式等配置项,为什么不起作用