一次配置,多场景适用: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脚本,然后通过脚本来实现启动、停止、重启等操作。


相关文章
|
16天前
|
XML Java 测试技术
Spring IOC—基于注解配置和管理Bean 万字详解(通俗易懂)
Spring 第三节 IOC——基于注解配置和管理Bean 万字详解!
104 26
|
29天前
|
监控 Java 数据库连接
Spring c3p0配置详解
在Spring项目中配置C3P0数据源,可以显著提高数据库连接的效率和应用程序的性能。通过合理的配置和优化,可以充分发挥C3P0的优势,满足不同应用场景的需求。希望本文的详解和示例代码能为开发者提供清晰的指导,帮助实现高效的数据库连接管理。
50 10
|
1月前
|
Java 测试技术 应用服务中间件
Spring Boot 配置文件总结
Spring Boot 提供全局配置文件 `application.properties` 和 `application.yml`,用于修改自动配置的默认值。前者使用键值对配置,后者使用缩进和冒号。不同环境(开发、测试、生产)可切换配置文件,通过 `spring.profiles.active` 指定。例如,开发环境端口为4790,测试环境为4791,生产环境为4792。配置示例展示了属性、List、Map定义及引用方法。
64 14
|
1月前
|
JavaScript Java 程序员
SpringBoot自动配置及自定义Starter
Java程序员依赖Spring框架简化开发,但复杂的配置文件增加了负担。SpringBoot以“约定大于配置”理念简化了这一过程,通过引入各种Starter并加载默认配置,几乎做到开箱即用。
117 10
SpringBoot自动配置及自定义Starter
|
2月前
|
Java Spring
【Spring】方法注解@Bean,配置类扫描路径
@Bean方法注解,如何在同一个类下面定义多个Bean对象,配置扫描路径
183 73
|
2月前
|
Java Spring
【Spring配置】idea编码格式导致注解汉字无法保存
问题一:对于同一个项目,我们在使用idea的过程中,使用汉字注解完后,再打开该项目,汉字变成乱码问题二:本来a项目中,汉字注解调试好了,没有乱码了,但是创建出来的新的项目,写的注解又成乱码了。
|
2月前
|
Java Spring
【Spring配置相关】启动类为Current File,如何更改
问题场景:当我们切换类的界面的时候,重新启动的按钮是灰色的,不能使用,并且只有一个Current File 项目,下面介绍两种方法来解决这个问题。
|
2月前
|
Java Spring
【Spring配置】创建yml文件和properties或yml文件没有绿叶
本文主要针对,一个项目中怎么创建yml和properties两种不同文件,进行配置,和启动类没有绿叶标识进行解决。
|
9月前
|
消息中间件 SpringCloudAlibaba Java
【Springcloud Alibaba微服务分布式架构 | Spring Cloud】之学习笔记(八)Config服务配置+bus消息总线+stream消息驱动+Sleuth链路追踪
【Springcloud Alibaba微服务分布式架构 | Spring Cloud】之学习笔记(八)Config服务配置+bus消息总线+stream消息驱动+Sleuth链路追踪
1090 0
|
XML Java 数据库连接
【Spring学习笔记 五】Spring注解及Java类配置开发
【Spring学习笔记 五】Spring注解及Java类配置开发
111 0