一次配置,多场景适用:Spring Boot多套配置文件的深度剖析

简介: 一次配置,多场景适用:Spring Boot多套配置文件的深度剖析


开发阶段

SpringBoot本身对项目的多环境配置已经做了非常友好的支持了,我们只需按照SpringBoot的约定去做就好。首先我们都知道,SpringBoot的默认配置文件是application.yml

配置多个环境只需要将默认配置文件复制几份,然后将文件名按照application-环境名.yml改为相应的名称,比如:

  • 测试环境:application-dev.yml
  • 生成环境:application-prod.yml

我们可以将多个环境相同的配置写在application.yml默认配置文件中,然后不同环境的配置写在各自的文件中,比如各种服务的连接信息等。

编辑好配置文件之后,我们需要在默认的配置文件中声明让哪种环境生效

# 激活指定配置文件
spring:
  profiles:
    active: prod

注意这里的名称只需要填写application-环境名.yml配置文件的环境名部分即可。

举例

首先我创建了一个测试项目,创建了默认的配置文件application.yml。然后我也创建了application-dev.ymlapplication-prod.yml,并做了以下配置

application.yml
server:
  servlet:
    context-path: /moti-graph
  port: 8081
# 激活指定配置文件
spring:
  profiles:
    active: prod
application-dev.yml
spring:
  neo4j:
    uri: bolt://localhost:7687
    authentication:
      username: neo4j
      password: neo4j
application-prod.yml
spring:
  neo4j:
    uri: bolt://47.106.183.193:7687
    authentication:
      username: neo4j
      password: 12345

可以看到,我这里指明生效的是application-prod.yml,之后我们启动项目,在控制台就可以看到这句话

如果配置生效的是其他环境的配置,那么在这里也会相应的打印出环境名称

发布阶段

当项目需要打包发布到服务器上的时候,打包的结果首先默认会根据你在application.yml声明生效的环境,所以打包发布的时候可以先确认一下是否将默认配置文件中的环境配置为生产环境。

使用Maven打包,默认会将配置文件打包到jar包内部。可以直接使用java -jar XXX.jar的方式启动项目

如果想要切换环境,可以直接在命令中添加参数--spring.profiles.active=环境名

java -jar --spring.profiles.active=dev moti-graph-0.0.1-SNAPSHOT.jar

当然也可以在启动项目的时候指定外部的配置文件,同样需要在命令中添加参数即可

我在项目外部创建了一个配置文件如下

server:
  servlet:
    context-path: /
  port: 8888

使用下面的命令启动项目

java -jar moti-graph-0.0.1-SNAPSHOT.jar --spring.config.location=/Users/moti/Desktop/application.yml

当然,项目真正发布的时候肯定不是直接使用这种简单粗暴的java -jar方式,一般都会有专门的人写shell脚本,然后通过脚本来实现启动、停止、重启等操作。


相关文章
|
2天前
|
Java Spring
【Spring】方法注解@Bean,配置类扫描路径
@Bean方法注解,如何在同一个类下面定义多个Bean对象,配置扫描路径
110 73
|
4天前
|
XML Java 数据格式
使用idea中的Live Templates自定义自动生成Spring所需的XML配置文件格式
本文介绍了在使用Spring框架时,如何通过创建`applicationContext.xml`配置文件来管理对象。首先,在resources目录下新建XML配置文件,并通过IDEA自动生成部分配置。为完善配置,特别是添加AOP支持,可以通过IDEA的Live Templates功能自定义XML模板。具体步骤包括:连续按两次Shift搜索Live Templates,配置模板内容,输入特定前缀(如spring)并按Tab键即可快速生成完整的Spring配置文件。这样可以大大提高开发效率,减少重复工作。
使用idea中的Live Templates自定义自动生成Spring所需的XML配置文件格式
|
4天前
|
Java Maven Spring
SpringBoot配置跨模块扫描问题解决方案
在分布式项目中,使用Maven进行多模块开发时,某些模块(如xxx-common)没有启动类。如何将这些模块中的类注册为Spring管理的Bean对象?本文通过案例分析,介绍了两种解决方案:常规方案是通过`@SpringBootApplication(scanBasePackages)`指定扫描路径;推荐方案是保持各模块包结构一致(如com.xxx),利用SpringBoot默认扫描规则自动识别其他模块中的组件,简化配置。
SpringBoot配置跨模块扫描问题解决方案
|
2天前
|
Java Spring
【Spring配置相关】启动类为Current File,如何更改
问题场景:当我们切换类的界面的时候,重新启动的按钮是灰色的,不能使用,并且只有一个Current File 项目,下面介绍两种方法来解决这个问题。
|
2天前
|
Java Spring
【Spring配置】idea编码格式导致注解汉字无法保存
问题一:对于同一个项目,我们在使用idea的过程中,使用汉字注解完后,再打开该项目,汉字变成乱码问题二:本来a项目中,汉字注解调试好了,没有乱码了,但是创建出来的新的项目,写的注解又成乱码了。
|
2天前
|
Java Spring
【Spring配置】创建yml文件和properties或yml文件没有绿叶
本文主要针对,一个项目中怎么创建yml和properties两种不同文件,进行配置,和启动类没有绿叶标识进行解决。
|
8天前
|
XML Java 数据格式
Spring容器Bean之XML配置方式
通过对以上内容的掌握,开发人员可以灵活地使用Spring的XML配置方式来管理应用程序的Bean,提高代码的模块化和可维护性。
40 6
|
10天前
|
XML Java 数据格式
🌱 深入Spring的心脏:Bean配置的艺术与实践 🌟
本文深入探讨了Spring框架中Bean配置的奥秘,从基本概念到XML配置文件的使用,再到静态工厂方式实例化Bean的详细步骤,通过实际代码示例帮助读者更好地理解和应用Spring的Bean配置。希望对你的Spring开发之旅有所助益。
59 3
|
2月前
|
人工智能 自然语言处理 前端开发
SpringBoot + 通义千问 + 自定义React组件:支持EventStream数据解析的技术实践
【10月更文挑战第7天】在现代Web开发中,集成多种技术栈以实现复杂的功能需求已成为常态。本文将详细介绍如何使用SpringBoot作为后端框架,结合阿里巴巴的通义千问(一个强大的自然语言处理服务),并通过自定义React组件来支持服务器发送事件(SSE, Server-Sent Events)的EventStream数据解析。这一组合不仅能够实现高效的实时通信,还能利用AI技术提升用户体验。
245 2
|
4天前
|
Java 数据库连接 Maven
最新版 | 深入剖析SpringBoot3源码——分析自动装配原理(面试常考)
自动装配是现在面试中常考的一道面试题。本文基于最新的 SpringBoot 3.3.3 版本的源码来分析自动装配的原理,并在文未说明了SpringBoot2和SpringBoot3的自动装配源码中区别,以及面试回答的拿分核心话术。
最新版 | 深入剖析SpringBoot3源码——分析自动装配原理(面试常考)