后端基础总结

news/2024/12/22 20:32:22/

后端基础总结

  • 参数校验
  • 异常处理
  • 系统日志

参数校验

使用@Validated

// 1. 加上校验规则@Data
public class User {private Long userId;@NotNull@Length(min = 2, max = 10)private String userName;
}
// 2. 使用@Validated注解@PostMapping("/saveUser")
public Result saveUser(@RequestBody @Validated User user) {// 校验通过,才会执行业务逻辑处理return Result.ok();
}

异常处理

使用@ControllerAdvice注解的类,可以捕获全局的异常。

在Springboot中,我们一般使用 @ControllerAdvice(注解类) + @ExceptionHandler(注解方法)的方式处理全局异常

For example

  1. 情况一:处理全局的空指针异常
// 可以使用@ControllerAdvice注解类 +  @ExceptionHandler(value =NullPointerException.class) 注解方法@RestControllerAdvice
public class GlobalExceptionHandler {/*** 处理空指针的异常* @param req* @param e* @return*/@ExceptionHandler(value =NullPointerException.class)public BaseResponseFacade exceptionHandler(HttpServletRequest req, NullPointerException e){log.error("发生空指针异常!原因是:",e);return ResponseUtil.error(ResponseCode.ERROR);}
}
  1. 情况二:我想捕获处理全局的空指针异常,并且捕获自定义的异常
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.experimental.Accessors;/*** @Description 自定义异常*/
@Data
@AllArgsConstructor
@Accessors(chain = true)
public class BizException extends RuntimeException {/*** 错误码*/protected Integer errorCode;/*** 错误信息*/protected String errorMsg;
}
// @ControllerAdvice注解类 + @ExceptionHandler(value = BizException.class) 注解方法// @ExceptionHandler 可以注解我们自定义的方法@Slf4j
@RestControllerAdvice
public class GlobalExceptionHandler {/*** 处理自定义的业务异常* @param req* @param e* @return*/@ExceptionHandler(value = BizException.class)public BaseResponseFacade bizExceptionHandler(HttpServletRequest req, BizException e){log.error("发生业务异常!原因是:{}",e.getErrorMsg());return ResponseUtil.error(e.getErrorCode(),e.getErrorMsg());}/*** 处理空指针的异常* @param req* @param e* @return*/@ExceptionHandler(value =NullPointerException.class)public BaseResponseFacade exceptionHandler(HttpServletRequest req, NullPointerException e){log.error("发生空指针异常!原因是:",e);return ResponseUtil.error(ResponseCode.ERROR);}
}

系统日志

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;//  1. 使用方式: 使用LoggerFactory.getLogger() 创建即可即可
@Controller
public class DemoController {private static final Logger log = LoggerFactory.getLogger(DemoController.class);@RequestMapping("/demo")@ResponseBodyString demo() {log.trace("Hello {}", "trace");log.debug("Hello {}", "debug");log.info("Hello {}", "info");log.warn("Hello {}", "warn");log.error("Hello {}", "error");return "Hello";}
}

2.默认情况下,日志是写在控制台上的我们可以把日志以文件的方式输出

只需在src/main/resources/下,创建一个logback.xml或logback-spring.xml就行

<configuration><appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"><!-- encoders are assigned the typech.qos.logback.classic.encoder.PatternLayoutEncoder by default --><encoder><pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern></encoder></appender><root level="debug"><appender-ref ref="STDOUT" /></root>
</configuration>

http://www.ppmy.cn/news/817974.html

相关文章

Linux 安装最新版Jenkins

1、 配置yum源 参考地址&#xff1a;https://pkg.jenkins.io/redhat-stable/ sudo wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo sudo rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io-2023.key2、 安装jenkins …

1年17薪 ! 特斯拉中国工厂普通工人月薪1万块

特斯拉中国工厂普通工人月薪1万块,很不错了,算是高薪了。 据媒体报道&#xff0c;有特斯拉工作人员透露&#xff0c;一名一线普通工人&#xff0c;每月基本工资5K&#xff0c;其他收入有奖金、津贴、加班费等&#xff0c;1年17薪&#xff0c;平均下来月收入接近1万元。 此外还有…

34岁央企女工程师,月入两万五,一家芯片公司给出60万年薪,要不要去?

有人想上岸&#xff0c;有人却想下海&#xff0c;不为别的&#xff0c;只为五斗米。 一位34岁的央企女工程师问&#xff1a;月薪2万&#xff0c;各种福利补贴每月5千&#xff0c;有房贷和养娃压力&#xff0c;目前有个芯片公司给4万&#xff0c;总包60万左右&#xff0c;要不要…

大厂与小厂工作的选择

本文来源&#xff1a;土豆他爸爸&#xff08;ID:itudoutababa&#xff09; 这周末回老家参加妹妹的婚礼&#xff0c;喜宴上和转行进入计算机行业1年多的老弟&#xff0c;聊了不少最近他的现状情况&#xff0c;发现和我刚毕业一两年那会情况类似。这里做一下聊天的总结和分享&am…

小厂一面

1、Java面向对象 面向对象的三大基本特征&#xff1a; 封装继承多态 面向对象的编程思想就是把事物看作一个整体&#xff0c;从事物的特征&#xff08;属性&#xff09;和行为&#xff08;方法&#xff09;两个方面进行描述。面向对象的过程就是找对象、建立对象、使用对象、维…

互联网大厂薪资真实情况:年薪百万有多难?

文/王琳 来源/Tech星球 要攒够100万需要多久&#xff1f; 对于近10亿月收入在2000元以下的人口而言&#xff0c;不吃不喝至少需要42年。但是对于那些在腾讯工作的“新生代民工”而言&#xff0c;这只需要1年多的时间。因为&#xff0c;根据腾讯第三季度财报显示&#xff0c;…

「津津乐道播客」#315 厂长来了:从个人英雄到软件工程,我们经历了什么(feat. ONES)...

从中文世界第一个真正意义上的“商用软件” WPS 诞生至今&#xff0c;已经有30多年了。 提到软件&#xff0c;很多朋友脑海里浮现出的第一个画面应该是一个秃头的程序员&#xff0c;独自坐在一台电脑前奋力敲打键盘的画面。曾几何时&#xff0c;个人英雄主义确实占据了软件&…

你们争相簇拥进大厂!而我37岁,年薪百万,却等着被公司干掉

围城 “等着被公司干掉”,这是我同学在腾讯工作六年近期叙旧聊的第一句话。 2015年,腾讯位于南山的滨海大厦封顶,分为南北两幢,最多可以容纳1.2万名员工办公。 也是在这一年,31岁的他进入腾讯,工资一万七,级别T2.3。 六年的时间里,他升到了T10,工资翻了几番。现在…