首页 > IT职业 > IT生活 > springboot进阶
public void create(@Valid Luckymoney luckymoney, BindingResult bindingResult){
if (bindingResult.hasErrors()) {
// bindingResult.getFieldError().getDefaultMessage()
}
}
private final static Logger logger = LoggerFactory.getLogger(HttpAspect.class);
@Pointcut("execution(public * com.lxh.summer.controller.LuckymoneyController.*(..))")
public void log(){
}
@Before("log()")
public void doBefore(JoinPoint joinPoint) {
logger.info("before");
}
@After("log()")
public void doAfter() {
logger.info("after");
}
@AfterReturning(returning = "object", pointcut = "log()")
public void doAfterReturning(Object object) {
logger.info("response={}", object);
}
// 记录http请求
ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
HttpServletRequest request = attributes.getRequest();
//url
logger.info("url={}", request.getRequestURL());
//method
logger.info("method={}", request.getMethod());
// ip
logger.info("ip={}", request.getRemoteAddr());
//类方法
logger.info("classMethod={}", joinPoint.getSignature().getDeclaringTypeName() + "." + joinPoint.getSignature().getName());
// 参数
logger.info("args={}", joinPoint.getArgs());
public class Result<T> {
/* 错误码*/
private Integer code;
/* 信息*/
private String msg;
/* 数据*/
private T data;
// getter setter 略
}
public class ResultUtil {
public static Result success(Object object) {
Result result = new Result();
result.setCode(ResultEnum.SUCCESS.getCode());
result.setMsg(ResultEnum.SUCCESS.getMessage());
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;
}
}
@ControllerAdvice
public class ExceptionHandle {
private final static Logger logger = LoggerFactory.getLogger(ExceptionHandle.class);
@ExceptionHandler(value = Exception.class)
@ResponseBody
public Result handle(Exception e) {
if (e instanceof LuckymoneyException) {
LuckymoneyException luckymoneyException = (LuckymoneyException) e;
return ResultUtil.error(luckymoneyException.getCode(), luckymoneyException.getMessage());
}
logger.error("系统错误", e);
return ResultUtil.error(ResultEnum.UNKNOWN_ERROR.getCode(), ResultEnum.UNKNOWN_ERROR.getMessage());
}
}
public class LuckymoneyException extends RuntimeException {
private Integer code;
public LuckymoneyException(ResultEnum resultEnum) {
super(resultEnum.getMessage());
this.code = resultEnum.getCode();
}
public Integer getCode() {
return code;
}
public void setCode(Integer code) {
this.code = code;
}
}
public enum ResultEnum {
UNKNOWN_ERROR(-500, "未知错误"),
SMALL_LUCKY(0, "红包太小了"),
BIG_LUCKY(1, "红包太大了"),
SUCCESS(200, "成功"),
FAILURE(400, "失败")
;
private Integer code;
private String message;
ResultEnum(Integer code, String message) {
this.code = code;
this.message = message;
}
public Integer getCode() {
return code;
}
public String getMessage() {
return message;
}
}
service层
public Luckymoney getMoney(Integer id) throws Exception{
Luckymoney luckymoney = respository.findById(id).orElse(null);
BigDecimal money = luckymoney.getMoney();
if (money.compareTo(new BigDecimal(100)) < 0){
// 抛出自定义异常
throw new LuckymoneyException(ResultEnum.SMALL_LUCKY);
} else if (money.compareTo(new BigDecimal(100)) > 0) {
throw new LuckymoneyException(ResultEnum.BIG_LUCKY);
} else {
return luckymoney;
}
}
controller层
@GetMapping("/luckymoney/{id}")
public Result getMoneyById(@PathVariable("id") Integer id) throws Exception{
// 返回统一结果
return ResultUtil.success(servive.getMoney(id));
}
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/2866/viewspace-2823338/ ,如需转载,请注明出处,否则将追究法律责任。