启动springboot包,profiles自动指定dev,导致jar包同级的config目录下的application.yml文件没有加载

本文描述了一名开发者在本地环境中使用dev配置文件,但打包后的jar包中包含了该配置,导致在不同环境下应用了dev配置而非预期的config目录下的application.yml。解决办法和避免此类问题的方法将被讨论。
摘要由CSDN通过智能技术生成

现象描述:因为想在本地配置一个本地环境专用的配置文件,所以建了一个dev文件夹,里面包含配置文件application-dev.yml文件,本地idea中配置Program arguments参数,使该dev配置文件生效

 ,但是在项目打包package时候,因为在pom中加入这个配置,导致application-dev.yml文件被打进包里面,所以打出来的jar包,resources目录下包含application-dev.yml文件,所以在其他环境用命令行启动时候,生效了dev配置,

所以导致application-dev.yml文件直接生效,而我们建的jar包同级config目录下的application.yml文件无法生效

Spring Boot自动加载名为 `application.yml` 或 `application.properties` 的配置文件,这些文件必须放在 Classpath 下的 `config` 或 `classpath root` 目录下。如果没有指定特定的 `spring.config.location` 属性,Spring Boot 将使用默认的搜索路径来查找并加载这些文件。 在 `application.yml` 文件中,可以使用 YAML 格式表示各种类型的配置信息。其中,`---` 分隔符用于分隔多个文档,在同一个 `application.yml` 文件中可以定义多个文档,每个文档对应一个 `@ConfigurationProperties` 类型的 Bean 配置。 除了常规的键值对配置值外,还可以通过 `spring.profiles` 属性配置不同的 Profile 环境,例如: ```yml spring: profiles: active: dev # 激活 dev 环境 --- spring: profiles: dev # 针对 dev 环境配置 datasource: url: jdbc:mysql://localhost:3306/dev_db username: dev_user password: dev_password --- spring: profiles: prod # 针对 prod 环境配置 datasource: url: jdbc:mysql://localhost:3306/prod_db username: prod_user password: prod_password ``` 在代码中,可以通过 `@ConfigurationProperties` 注解绑定 YAML 配置到 Java Bean 中,例如: ```java @Configuration @ConfigurationProperties(prefix = "datasource") public class DataSourceConfig { private String url; private String username; private String password; // getter and setter } ``` 当 `DataSourceConfig` Bean 被创建时,Spring Boot 就会从 `application.yml` 文件读取以 `datasource` 为前缀的配置值,并设置到 `DataSourceConfig` 对象中,从而完成配置注入。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值