经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » Java相关 » Spring Boot » 查看文章
SpringBoot3基础用法
来源:cnblogs  作者:知了一笑  时间:2023/8/9 9:18:44  对本文有异议

技术和工具「!喜新厌旧」

一、背景

最近在一个轻量级的服务中,尝试了最新的技术和工具选型;

SpringBoot3JDK17IDEA2023Navicat16,虽然新的技术和工具都更加强大和高效,但是适应采坑的过程总是枯燥的;

【环境一览】

首先框架主体从SpringBoot2升级到SpringBoot3,Java基础环境从JDK8升级到JDK17

技术升级都到这步了,自然连带着工具都升级到最新版本了,涉及到的其他组件,也会选择与当前框架适应的版本;

至于为何使用JDK17,因为是SpringBoot3的最低依赖,也和官方的维护周期有关;

实际上如果JDK21已经发布的话,个人更倾于这个版本,要是没有合适的尝试机会,继续使用JDK8也问题不大;

另外开发工具IDEA2021.2版本才开始支持JDK17,所以如果版本过低的话也需要升级,至于Navicat16纯属跟风操作;

二、环境搭建

1、工程结构

在工程结构上没有什么变化,通过maven组件构建项目,对于入门案例来说,注意框架依赖,启动类,配置文件即可;

2、框架依赖

在该工程中只是SpringBoot3框架的简单测试,所以只引入web依赖就足够;

  1. <dependencies>
  2. <dependency>
  3. <groupId>org.springframework.boot</groupId>
  4. <artifactId>spring-boot-starter-web</artifactId>
  5. <version>${spring-boot.version}</version>
  6. </dependency>
  7. </dependencies>

至于Spring框架和其他组件的依赖,顺着web依赖追溯即可,核心的依赖和版本都可以找到;

3、环境配置

入门案例,在这里只简单的配置服务器和应用名称;

  1. server:
  2. port: 8082 # 端口号
  3. tomcat: # Tomcat组件
  4. uri-encoding: UTF-8 # URI编码
  5. spring:
  6. application:
  7. name: boot-base

三、入门案例

1、测试接口

提供一个简单的Get请求接口,使用了部分JDK新版的语法,如果抛出异常会统一处理;

  1. @RestController
  2. public class BootBaseWeb {
  3. @GetMapping("/boot/base/{id}")
  4. public Map<String,String> getInfo (@PathVariable String id){
  5. if (id.isBlank() || "0".equals(id)){
  6. throw new RuntimeException("参数ID错误");
  7. }
  8. var dataMap = new HashMap<String,String>();
  9. dataMap.put("id",id);
  10. dataMap.put("boot","base");
  11. return dataMap ;
  12. }
  13. }

2、全局异常

基于注解RestControllerAdviceExceptionHandler统一异常处理;

  1. @RestControllerAdvice
  2. public class HandlerExe {
  3. @ExceptionHandler(value = Exception.class)
  4. public Map<String,String> handler02 (HttpServletRequest request, Exception e){
  5. var errorMap = new HashMap<String,String>() ;
  6. errorMap.put("code","500");
  7. errorMap.put("url",request.getRequestURL().toString());
  8. errorMap.put("msg",e.getMessage());
  9. return errorMap ;
  10. }
  11. }

3、日志打印

3.1 日志配置

application.yml文件中,简单的添加日志配置内容,然后从日志文件或者控制台输出查看相关信息;

  1. logging:
  2. level:
  3. root: info
  4. file:
  5. path: ./
  6. name: logs/${spring.application.name}.log
  7. pattern:
  8. console: "%d{yyyy-MM-dd HH:mm:ss} %contextName [%thread] %-5level %logger- %msg%n"
  9. file: "%d{yyyy-MM-dd HH:mm:ss} %contextName [%thread] %-5level %logger- %msg%n"
  10. logback:
  11. rolling-policy:
  12. max-history: 7
  13. max-file-size: 10MB
  14. total-size-cap: 50MB

3.2 日志打印

虽然采用的是logback组件,但是使用slf4j的API即可;

  1. import org.slf4j.Logger;
  2. import org.slf4j.LoggerFactory;
  3. @RestController
  4. public class BootLogWeb {
  5. private static final Logger LOGGER = LoggerFactory.getLogger(BootBaseWeb.class);
  6. @GetMapping("/boot/print/log")
  7. public String printLog (HttpServletRequest request){
  8. LOGGER.info("remote-host:{}",request.getRemoteHost());
  9. LOGGER.info("request-uri:{}",request.getRequestURI());
  10. return request.getServerName() ;
  11. }
  12. }

四、打包运行

打包代码工程中的m1-01-boot-base子模块,以及其相关的依赖;

  1. mvn clean -pl m1-01-boot-base -am -Dmaven.test.skip=true package

运行m1-01-boot-base.jar服务,并指定相应的端口号为8080,然后测试其中相关接口查看日志即可;

  1. java -jar m1-01-boot-base.jar --server.port=8080

五、参考源码

  1. 文档仓库:
  2. https://gitee.com/cicadasmile/butte-java-note
  3. 源码仓库:
  4. https://gitee.com/cicadasmile/butte-spring-parent

原文链接:https://www.cnblogs.com/cicada-smile/p/17611298.html

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号