SpringBoot多环境打包与配置文件排除实践记录
推荐阅读:
Spring Boot 项目多环境打包与配置文件排除实践
在实际开发中,Spring Boot 项目通常需要适配不同的运行环境,例如开发环境、测试环境、生产环境等。这些环境下的配置可能包含敏感信息,例如数据库连接密码、API密钥等。因此,在项目打包时,我们不仅需要支持多环境配置,还要考虑如何排除敏感配置文件,以保证安全性。
多环境配置的实现方法打包时排除配置文件的方法动态加载外部配置文件的最佳实践
一、多环境配置的实现方法
1. 配置多环境文件
Spring Boot 默认加载 application.properties
或 application.yml
配置文件。为了支持多环境配置,可以通过文件命名的方式区分环境,比如:
application-dev.yml
:开发环境配置application-test.yml
:测试环境配置application-prod.yml
:生产环境配置
各环境配置文件可以定义不同的参数。例如,以下是开发和生产环境的数据库配置:
开发环境:application-dev.yml
server: port: 8081 spring: datasource: url: jdbc:mysql://localhost:3306/dev_db username: dev_user password: dev_password
生产环境:application-prod.yml
server: port: 8080 spring: datasource: url: jdbc:mysql://prod-server:3306/prod_db username: prod_user password: prod_password
2. 动态切换环境
在 application.yml
中配置默认激活的环境:
spring: profiles: active: dev
通过命令行参数启动时动态指定环境:
java -jar your-application.jar --spring.profiles.active=prod
二、打包时排除配置文件的方法
在某些情况下,敏感的配置文件(如 application-prod.yml
)可能包含生产环境的重要信息。我们希望这些文件在打包时被排除,而不是直接包含在最终的 JAR 包中。
1. 使用 Maven 排除配置文件
方法 1:通过 maven-resources-plugin
在 Maven 的 pom.xml
中,通过 maven-resources-plugin
在资源打包阶段排除文件:
<build> <resources> <resource> <directory>src/main/resources</directory> <excludes> <exclude>application-prod.yml</exclude> <!-- 排查所有目录下的所有配置文件 <exclude>**/*.*</exclude> --> </excludes> </resource> </resources> </build>
方法 2:通过 maven-assembly-plugin
使用 maven-assembly-plugin
自定义打包配置:
添加插件配置:
<build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-assembly-plugin</artifactId> <version>3.3.0</version> <configuration> <descriptors> <descriptor>src/main/assembly/assembly.xml</descriptor> </descriptors> </configuration> </plugin> </plugins> </build>
创建 assembly.xml
文件:
<assembly xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.3"> <id>jar-with-dependencies</id> <formats> <format>jar</format> </formats> <fileSets> <fileSet> <directory>${project.basedir}/src/main/resources</directory> <excludes> <exclude>application-prod.yml</exclude> </excludes> </fileSet> </fileSets> </assembly>
执行构建命令:
mvn clean package
2. 使用 Gradle 排除配置文件
在 Gradle 的 build.gradle
文件中,可以通过 processResources
任务排除文件:
tasks.processResources { exclude 'application-prod.yml' }
构建时运行:
./gradlew clean build
三、动态加载外部配置文件
为了进一步提高安全性,我们可以将敏感配置文件存储在外部,并通过动态加载的方式使用这些文件。
1. 存放外部配置文件
将敏感的配置文件(如 application-prod.yml
)存放在服务器的安全路径,例如 /etc/app-config/
。
2. 启动时指定外部配置路径
通过启动参数 --spring.config.location
指定外部配置文件的路径:
java -jar your-application.jar --spring.config.location=/etc/app-config/application-prod.yml
3. 配置环境变量
将配置路径指定为环境变量,启动时自动加载:
export SPRING_CONFIG_LOCATION=/etc/app-config/ java -jar your-application.jar
4. 在配置文件中指定额外路径
在主配置文件中,使用 spring.config.additional-location
指定额外的加载路径:
spring: config: additional-location: file:/etc/app-config/application-prod.yml
四、总结
多环境配置
- 为不同的环境创建独立的配置文件(
application-dev.yml
、application-prod.yml
)。 - 使用
spring.profiles.active
动态切换环境。
配置文件排除
- Maven:通过
maven-resources-plugin
或maven-assembly-plugin
排除敏感文件。 - Gradle:通过
processResources
配置排除文件。
动态加载外部配置
- 将敏感文件存储在外部路径,通过启动参数、环境变量或额外路径加载。
推荐实践
- 敏感信息外部化:避免将敏感信息打包到 JAR 中。
- 版本控制:将环境无关的公共配置纳入版本管理,但排除敏感文件。
- 环境隔离:通过 CI/CD 流程在不同环境中自动部署相应的配置。
到此这篇关于SpringBoot - 多环境打包与配置文件排除实践的文章就介绍到这了,更多相关SpringBoot 多环境打包内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
启用springboot security后登录web页面需要用户名和密码的解决方法
这篇文章主要介绍了启用springboot security后登录web页面需要用户名和密码的解决方法,也就是使用默认用户和密码登录的操作方法,本文结合实例代码给大家介绍的非常详细,需要的朋友可以参考下2023-02-02MyBatis中resultType和parameterType和resultMap使用总结
这篇文章主要介绍了MyBatis中resultType和parameterType和resultMap使用总结,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教2022-11-11Java的Hibernate框架中一对多的单向和双向关联映射
建立对SQL语句的映射是Hibernate框架操作数据库的主要手段,这里我们列举实例来为大家讲解Java的Hibernate框架中一对多的单向和双向关联映射2016-06-06
最新评论