当前位置:首页 > 科技  > 软件

SpringBoot项目中这10个开发技巧你都知道吗?

来源: 责编: 时间:2024-05-16 09:00:19 85观看
导读环境:SpringBoot3.2.51. 使用Maven自动扩展属性通过使用资源过滤,你可以从 Maven 项目中自动扩展属性。如果使用 spring-boot-starter-parent,就可以用 @..@ 占位符引用 Maven "project properties",如下示例:pack: app:

环境:SpringBoot3.2.5UwA28资讯网——每日最新资讯28at.com

1. 使用Maven自动扩展属性

通过使用资源过滤,你可以从 Maven 项目中自动扩展属性。如果使用 spring-boot-starter-parent,就可以用 @..@ 占位符引用 Maven "project properties",如下示例:UwA28资讯网——每日最新资讯28at.com

pack:  app:    java-version: "java.version@"    springboot-version: "@project.parent.version@"    sourceEncoding: "@project.build.sourceEncoding@"

测试UwA28资讯网——每日最新资讯28at.com

@Value("${pack.app.java-version}")private String javaVersion ;@Value("${pack.app.springboot-version}")private String springBootVersion ;@Value("${pack.app.sourceEncoding}")private String sourceEncoding ;

输出结果UwA28资讯网——每日最新资讯28at.com

java-version: 17.0.9, springboot-version: 3.2.5, sourceEncoding: UTF-8

maven parent定义如下:UwA28资讯网——每日最新资讯28at.com

图片图片UwA28资讯网——每日最新资讯28at.com

注:在生成环境下,你将无法看到上面的输出结果,你需要做其它的配置,情况下面的第九条。UwA28资讯网——每日最新资讯28at.com

2. SpringApplication外部化配置

可以通过在 spring.main.* 中设置属性来将配置外部化UwA28资讯网——每日最新资讯28at.com

spring:  main:    web-application-type: servlet        banner-mode: off

其它配置属性如下UwA28资讯网——每日最新资讯28at.com

图片图片UwA28资讯网——每日最新资讯28at.com

如果你通过编程的方式也设置了上面的属性,如下:UwA28资讯网——每日最新资讯28at.com

SpringApplication app = new SpringApplication(Application.class) ;app.setWebApplicationType(WebApplicationType.SERVLET) ;app.setBannerMode(Mode.CONSOLE) ;app.run(args) ;

那么配置文件中自定义配置优先级高于代码中设置。UwA28资讯网——每日最新资讯28at.com

注意看上面的配置属性,我们还可以之多多个源配置(其实就是添加一些配置类而已)。UwA28资讯网——每日最新资讯28at.com

spring:  main:    sources:    - com.pack.CustomConfig    - com.pack.AkfConfig

不通过编码,之间通过配置文件像容器中添加2个配置类。UwA28资讯网——每日最新资讯28at.com

3. 修改配置文件位置&名称

我们可以通过以下系统属性(或环境变量)来更改行为:UwA28资讯网——每日最新资讯28at.com

  • spring.config.name (SPRING_CONFIG_NAME)默认是application为名称
  • spring.config.location (SPRING_CONFIG_LOCATION)要加载的文件(如 classpath 资源或 URL)。为该文件设置了一个单独的环境属性源,它可以被系统属性、环境变量或命令行覆盖。

在应用启动时,我们需要制定系统属性或者对应的环境变量(上面的大写),如下UwA28资讯网——每日最新资讯28at.com

java -Dspring.config.name=app -jar MyApp.jar

指定配置文件的名称是app,启动时会自动的加载app.yml或者app.properties配置UwA28资讯网——每日最新资讯28at.com

java -Dspring.config.locatinotallow=d:/xxxooo/app.yml -jar MyApp.jar

指定配置文件的路径。UwA28资讯网——每日最新资讯28at.com

4. 激活配置文件

当你有如下配置文件时:UwA28资讯网——每日最新资讯28at.com

图片图片UwA28资讯网——每日最新资讯28at.com

除默认的applicaiton.yml配置文件外,还有其它针对不同环境的配置文件,你可以通过如下配置激活对应的配置文件:UwA28资讯网——每日最新资讯28at.com

spring:  profiles:    active:    - dev

这里设置dev后上面的配置不仅会加载默认的application.yml还会加载application-dev.yml配置文件。UwA28资讯网——每日最新资讯28at.com

当你没有激活任何配置时(没有设置spring.profiles.active),在默认情况下会加载default配置,如:application-default.yml。通过如下配置修改:UwA28资讯网——每日最新资讯28at.com

spring:  profiles:    default: dev

这样配置后会加载application-dev.yml配置。UwA28资讯网——每日最新资讯28at.com

5. 设置父容器

在SpringMVC项目中默认是有父子容器说法,在SpringBoot项目默认是没有父子容器,不过我们可以通过如下方式设置父子容器。UwA28资讯网——每日最新资讯28at.com

SpringApplicationBuilder builder = new SpringApplicationBuilder(Application.class) ;// 这样设置后,你当前容器将是父容器;child内部会再创建一个SpringApplicationBuilder同时设置是非web项目。builder.child(ChildConfig.class) ;// 这样设置后,你当前容器将是子容器。builder.parent(ParentConfig.class) ;builder.build().run(args) ;

不管是使用child还是parent,内部创建的都是AnnotationConfigApplicationContext容器。UwA28资讯网——每日最新资讯28at.com

6. 修改默认DispatcherServlet路径UwA28资讯网——每日最新资讯28at.com

默认情况下,所有接口访问都从根目录 (/) 进行。你可以按如下修改默认的访问路径:UwA28资讯网——每日最新资讯28at.com

spring:  mvc:    servlet:      path: /api

这样配置后所有的请求都必须是/api/**开头。UwA28资讯网——每日最新资讯28at.com

对于DispatcherServlet的定义,我们可以通过自定义DispatcherServletRegistrationBean bean方式实现。UwA28资讯网——每日最新资讯28at.com

@Bean(name = DEFAULT_DISPATCHER_SERVLET_REGISTRATION_BEAN_NAME)public DispatcherServletRegistrationBean dispatcherServletRegistration() {  DispatcherServlet dispatcherServlet = new DispatcherServlet() ;  // TODO; dispatcherServlet 相应配置  DispatcherServletRegistrationBean registration = new DispatcherServletRegistrationBean(dispatcherServlet,      "/api") ;  registration.setName("dispatcherServlet") ;  registration.setLoadOnStartup(0) ;  return registration ;}

该种方式实现更多的自定义配置。UwA28资讯网——每日最新资讯28at.com

7. 访问日志配置

访问日志可通过 Tomcat、Undertow 和 Jetty 各自的命名空间进行配置。如下是对Tomcat配置。UwA28资讯网——每日最新资讯28at.com

server:  tomcat:    basedir: "pack-tomcat"    accesslog:      enabled: true      pattern: "%t %a %r %s (%D microseconds)"

UwA28资讯网——每日最新资讯28at.com

日志的默认位置是相对于 Tomcat 基本目录的日志目录。默认情况下,日志目录是一个临时目录,如果你要固定目录,你可以安装如上配置,日志位于 pack-tomcat/logs 中,相对于应用程序的工作目录。UwA28资讯网——每日最新资讯28at.com

UwA28资讯网——每日最新资讯28at.com

8. 启用 Tomcat 的 MBean 注册表

嵌入式 Tomcat 的 MBean 注册表默认是禁用的。这最大限度地减少了 Tomcat 的内存占用。如果你想使用 Tomcat 的 MBeans,例如让 Micrometer 使用它们来公开度量指标,就必须使用 server.tomcat.mbeanregistry.enabled 属性来实现,如下例所示:UwA28资讯网——每日最新资讯28at.com

server:  tomcat:    mbeanregistry:      enabled: true

开启以后,通过jconsole查看MBean信息,如下:UwA28资讯网——每日最新资讯28at.com

图片图片UwA28资讯网——每日最新资讯28at.com

在这里你可以查看到Tomcat的各项指标信息。UwA28资讯网——每日最新资讯28at.com

9. 生成构建信息

Maven 插件和 Gradle 插件都允许生成包含项目坐标、名称和版本的构建信息。这些插件还可以通过配置添加其他属性。当存在此类文件时,Spring Boot 会自动配置一个 BuildProperties Bean。UwA28资讯网——每日最新资讯28at.com

<plugin>  <groupId>org.springframework.boot</groupId>  <artifactId>spring-boot-maven-plugin</artifactId>  <version>3.2.5</version>  <executions>    <execution>      <goals>          <goal>build-info</goal>      </goals>    </execution>  </executions></plugin>

通过上面的配置,你在配置文件中使用的@...@就会得到生效。UwA28资讯网——每日最新资讯28at.com

10. 生成Git信息

Maven 和 Gradle 都允许生成一个 git.properties 文件,其中包含项目构建时 git 源代码仓库的状态信息。添加如下插件:UwA28资讯网——每日最新资讯28at.com

<plugin>  <groupId>io.github.git-commit-id</groupId>  <artifactId>git-commit-id-maven-plugin</artifactId></plugin>

编译打包项目后,在你的jar包中的classes下会包含一个git.properties信息。内容如下(在控制台也会输出这些信息):UwA28资讯网——每日最新资讯28at.com

图片图片UwA28资讯网——每日最新资讯28at.com

jar包中的classes目录UwA28资讯网——每日最新资讯28at.com

图片 图片 UwA28资讯网——每日最新资讯28at.com

本文链接://www.dmpip.com//www.dmpip.com/showinfo-26-88312-0.htmlSpringBoot项目中这10个开发技巧你都知道吗?

声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。邮件:2376512515@qq.com

上一篇: Android:excludeFromRecents属性使用分析

下一篇: ArkUI如何实现增删Tab页签

标签:
  • 热门焦点
  • 对标苹果的灵动岛 华为带来实况窗功能

    对标苹果的灵动岛 华为带来实况窗功能

    继苹果的灵动岛之后,华为也在今天正式推出了“实况窗”功能。据今天鸿蒙OS 4.0的现场演示显示,华为的实况窗可以更高效的展现出实时通知,比如锁屏上就能看到外卖、打车、银行
  • 三言两语说透柯里化和反柯里化

    三言两语说透柯里化和反柯里化

    JavaScript中的柯里化(Currying)和反柯里化(Uncurrying)是两种很有用的技术,可以帮助我们写出更加优雅、泛用的函数。本文将首先介绍柯里化和反柯里化的概念、实现原理和应用
  • JavaScript学习 -AES加密算法

    JavaScript学习 -AES加密算法

    引言在当今数字化时代,前端应用程序扮演着重要角色,用户的敏感数据经常在前端进行加密和解密操作。然而,这样的操作在网络传输和存储中可能会受到恶意攻击的威胁。为了确保数据
  • 2023年,我眼中的字节跳动

    2023年,我眼中的字节跳动

    此时此刻(2023年7月),字节跳动从未上市,也从未公布过任何官方的上市计划;但是这并不妨碍它成为中国最受关注的互联网公司之一。从2016-17年的抖音强势崛起,到2018年的&ldquo;头腾
  • 国行版三星Galaxy Z Fold5/Z Flip5发布 售价7499元起

    国行版三星Galaxy Z Fold5/Z Flip5发布 售价7499元起

    2023年8月3日,三星电子举行Galaxy新品中国发布会,正式在国内推出了新一代折叠屏智能手机三星Galaxy Z Fold5与Galaxy Z Flip5,以及三星Galaxy Tab S9
  • 支持aptX Lossless无损传输 iQOO TWS 1赛道版发布限时优惠价369元

    支持aptX Lossless无损传输 iQOO TWS 1赛道版发布限时优惠价369元

    2023年7月4日,“无损音质,声动人心”iQOO TWS 1正式发布,支持aptX Lossless无损传输,限时优惠价369元。iQOO TWS 1耳机率先支持端到端aptX Lossless无
  • iQOO Neo8系列今日官宣:首发天玑9200+ 全球安卓最强芯!

    iQOO Neo8系列今日官宣:首发天玑9200+ 全球安卓最强芯!

    在昨日举行的的联发科新一代旗舰芯片天玑9200+的发布会上,iQOO官方也正式宣布,全新的iQOO Neo8系列新品将全球首发搭载这款当前性能最强大的移动平台
  • 英特尔Xe-HP项目终止,将专注Xe-HPC/HPG系列显卡

    英特尔Xe-HP项目终止,将专注Xe-HPC/HPG系列显卡

    据10 月 31 日消息报道,英特尔高级副总裁兼加速计算系统和图形事业部总经理 表示,Xe-HP“ Arctic Sound” 系列服务器 GPU 已经应用于 oneAPI devcloud 云服
  • 北京:科技教育体验基地开始登记

    北京:科技教育体验基地开始登记

      北京“科技馆之城”科技教育体验基地登记和认证工作日前启动。首批北京科技教育体验基地拟于2023年全国科普日期间挂牌,后续还将开展常态化登记。  北京科技教育体验基
Top
Baidu
map