spring-boot学习笔记(3)
2017-09-16 14:13
369 查看
一表单验证
在entity类的属性中加入注解@Min(value=18, message="未成年禁止入内")
controller方法参数中加入
pulic Girl girlAdd(@Valid Girl girl,BindingResult bindingResult){ if(bindingResult.hasErrors()){ System.out.println(bindingResult.getFieldError().getEdfaultMessage()) } }
二 AOP统一处理请求日志
AOP面向切面,是一种编程范式,与语言无关,是一种程序设计思想只有登陆之后才能进行操作的实现方法
a. 在pom文件中添加依赖
<artifactId>spring-boot-starter-aop</artifactId>
b. 新建一个处理Java Class文件 添加注解@Aspect @Component
@Before("execution(public * com.cn.controller.GirlController.方法名(..))")
请求某个方法之前做该操作
public void log(){在该方法之前进行操作} 还有After方法
对b进行优化
@Pointcut(execution(public * com.cn.controller.GirlController.方法名(..)) public void log(){} @Before("log") public void doBefore(){}
三 log的使用
在HttpAspect文件中private final static Logger logger = LoggerFactory.getLogger(HttpAspect.class);参数为所在类的类名
logger.info(“标注内容”) 写入日志的信息
四 获取访问某个方法的请求信息
在public void doBefore()传入参数JoinPoint joinPointServletRequestAttributes attributes =(ServletRequestAttributes)RequestContextHolder.getRequestAttributes(); HttpServletRequest request = attributes.getRequest(); logger.info("url={}", request.getRequestURL()); URL logger.info("method={}", request.getMethod()); GET PUT logger.info(""ip={},request.getRemoteAddr()); ip地址 logger.info("class_method={}", joinPoint.getSignature().getDeclaringTypeName()+"."+joinPoint.getSignature().getName()) 类名 logger.info("class_arguement={}",joinPoint.getArgs());
获取某个方法返回的信息
@AfterReturning(returning="object", pointcut="log()") public void doAfterReturning(Object object){ logger.info("response={}",object.toString()); 需要函数返回的对象有toString 方法 }
五.统一异常处理
新建一个Result 类,类中写上code ,msg,data三个属性写一个ResultUtil 类
public static Result success(Object object){ Result result =new Result(); result.setCode(200); result.setMsg("成功"); result.setData(object); return result; } public static Result success(){ return success(null); } public static Result error(Integer code,String msg){ Result result = new Result(); result.setCode(code); result.setMsg(msg); return result; }
调用
if(bindingResult.hasErros()){ return ResultUtil.error("404",bindingResult.getFieldError().getDefaultMessage(); } ..... return Result.success(girlRepository.save(girl));
六.异常捕获
定义一个异常类public class GirlException extends RuntimeExpection{ //spring只会回滚RuntimeExpection private Integer code; public GirlException(Integer code,String message){ super(message); this.code=code; } getCode()/setCode()方法 }
定义一个异常处理类
public class ExceptionHandle{ @ExceptionHandle(value = Exception.class) @ResponseBody public Result handle(Exception e){ if(e instanceof GirlException){ GirlException girlException = (GirlException) e; return ResultUtil.error(girlException.getCode(), girlException.getMessage()); }else{ return ResultUtil.error(-1,"未知错误"); } }
在service中调用
public void getAge(Integer id) throws Exception{ if(age
相关文章推荐
- (一) Spring Boot学习笔记之第一个Spring Boot程序HelloWorld
- 01.Spring Cloud学习笔记之使用IDEA+Spring Boot快速构建Rest服务
- spring boot 学习笔记(009)application.yml
- 02.Spring Cloud学习笔记之Spring Boot配置文件详解
- SprintBoot学习笔记(2):SpringBoot跳转至页面
- spring boot 学习笔记(2)--@PathVariable @RequestParam @GetMapping @PostMapping
- Spring Boot 学习笔记【8】Spring Boot支持MyBatis
- 携程 Apollo 配置中心 | 学习笔记(三) 自定义Spring Boot项目通过配置中心启动项目
- spring-boot学习笔记3
- Spring boot 学习笔记 ---分分钟构建一个web程序(一)
- spring boot 学习笔记(001) 新建Eclipse工程
- spring boot学习笔记——踩坑
- Springboot学习笔记 2017-03-28
- spring boot 学习笔记(一)
- Spring Boot学习笔记-MVC
- Spring Boot学习笔记-创建第一个Spring Boot应用
- SpringBoot学习笔记-Eclipse创建SpringBoot项目
- 【SpringBoot】2小时学会SpringBoot学习笔记( 第6章 事务管理 )
- SpringBoot学习笔记之JSP与freemarker支持
- springboot学习笔记-6 springboot整合RabbitMQ