您的位置:首页 > 编程语言 > Java开发

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 joinPoint

ServletRequestAttributes 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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: