spring boot、maven自定义配置文件

本文详细介绍了如何在Maven项目中通过pom.xml的<profiles>标签设置配置文件加载路径,包括如何指定不同环境的配置文件,解析profile路径加载顺序及配置文件覆盖规则,以及如何在SpringBoot项目中正确加载多个配置文件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在pom.xml中设置<profiles>标签来指定配置文件加载路径

<profiles>
        <profile>
            <id>local</id>
            <build>
                <resources>
                    <resource>
                        <directory>src/main/profile</directory>
                    </resource>
                    <resource>
                        <directory>src/main/resources</directory>
                    </resource>
                </resources>
            </build>
            <activation>
                <activeByDefault>true</activeByDefault>
            </activation>
        </profile>
    </profiles>

resources属性指定了配置文件资源的路径

id是可以为maven在编译的时候指定对应值然后使用对应id的profile

activationByDefault属性指定该profile为默认加载profile

如果在编译时mvn -P local命令,这样就会加载id为local的profile

 

设置完profile之后,运行程序,会看到target/classes目录下有application.properties文件,打开一看,为自己的配置文件。

那profile里不是设置了两个路径吗?src/main/profile和src/main/resources,为什么只有一个application.properties?src/main/resources下的配置文件里没有写任何配置,但是这个配置文件为啥没有加载到classpath下?

试着调整pom.xml里的profiles设置如下:

<profiles>
        <profile>
            <id>local</id>
            <build>
                <resources>
                    <resource>
                        <directory>src/main/resources</directory>
                    </resource>
                    <resource>
                        <directory>src/main/profile</directory>
                    </resource>
                </resources>
            </build>
            <activation>
                <activeByDefault>true</activeByDefault>
            </activation>
        </profile>
    </profiles>

再次运行,发现程序报错,找不到配置,进入target/classes里一看,application.properties里啥也没有。

综上可以得出,pom.xml里profile的路径会从下至上的加载,这样如果有同名的文件,上面的profile路径的会覆盖下面的。

如果将两个路径里的配置文件改成不一样的名字,则target/classes里两个属性配置文件都有了。

但是这时候需要在spring boot主类前加上新属性文件的注解:

@SpringBootApplication(exclude = DataSourceAutoConfiguration.class)
@PropertySource("classpath:app.properties")
public class SpringbootApplication {

    public static void main(String[] args) {
        SpringApplication.run(SpringbootApplication.class, args);
    }
    
}

大功告成!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值