idea pom profiles 配置的使用

idea pom profiles 配置的使用,第1张

多配置文档的使用

Maven 中有一个概念叫做:profile,它的诞生主要是为了解决不同环境所需的不同变量、配置等问题。

有了 profile,腔物可以根据激活的条件,启动不同条件下的配置信息。

profile 是可以有多个的,也可以同时激活多个 profile,方便自由组合。

<build>

<蚂圆册plugins>

<plugin>

<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-maven-plugin</artifactId>

</plugin>

</plugins>

<resources>

<resource>

<directory>src/main/resources</directory>

<filtering>true</filtering>

<excludes>

<exclude>application.properties</exclude>

<exclude>application-dev.properties</exclude>

<exclude>application-local.properties</exclude>

</excludes>

</resource>

<resource>

<directory>src/main/resources</directory>

<filtering>true</filtering>

<includes>

<include>application-${profiles.active}.properties</include>

            <闷宏/includes>

</resource>

</resources>

</build>

<profiles>

<profile>

<!-- 开发环境 -->

        <id>dev</id>

<!--这三行不管用-->

        <activation>

<activeByDefault>true</activeByDefault>

</activation>

</profile>

<profile>

<!-- 生产环境 -->

        <id>prod</id>

<properties>

<profiles.active>prod</profiles.active>

</properties>

</profile>

</profiles>

并在application.properties中加载

spring.profiles.active =@profiles.active@

只需在右侧的profiles的选项打对应的√就行。

在springboot项目中,通过idea在配置spring.profiles.active

(1)在windows下点击idea的启动,可以通过System.getProperty("spring.profiles.active")获取到dev值

(2)在mac下点击idea的启动,同样的配置,但通过System.getProperty("spring.profiles.active")时获取到的值辩配是null;

对比:

(1)在windows启动时,控制台输出:

参数设置被直接以-Dspring.profiles.active=dev追加到了 java命令之后,是以虚拟机参数进行设置

(2)在mac启动时,控制台输出:

参数设置被直接以--spring.profiles.active=dev追加到了 启动类命令之后

在命令运行时,连续两个减号 --就是对application.properties中属性值进行赋值的标志。

那么在mac下可以通过设置VM options来达到windows相同的效果

这时,命令窗会出现:

        但是这样的话就会出现多个spring.profiles.active(-Dspring.profiles.active=dev和最末尾--spring.profiles.active=dev)那么两个值最终取的是哪个呢? 按照springboot配置加载优先级来看,最终程序中使用优先级更高的--spring.profiles.active

        需要注意:-Dspring.profiles.active=dev是将值设置到了虚拟机脊灶神中,通过System.getProperty("spring.profiles.active")可以获取到dev但是使用--spring.profiles.active=dev使用System.getProperty("spring.profiles.active")是获取不到的。

        Spring Boot 所提供的配置优先级顺序比较复杂。按照优先级从高到低的顺序,具体的列表如下:

1.命令行参数。

2.通过 System.getProperties() 获取的 Java 系统参数。

3. *** 作系统环境变量。

4.从 java:comp/env 得到的 JNDI 属性。

5.通过 RandomValuePropertySource 生成的“random.*”属性。

6.应用 Jar 文件之外的属性文件。(通过spring.config.location参数)

7.应用樱亏 Jar 文件内部的属性文件。

8.在应用配置 Java 类(包含“@Configuration”注解的 Java 类)中通过“@PropertySource”注解声明的属性文件。

9.通过“SpringApplication.setDefaultProperties”声明的默认属性


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/12133158.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-21
下一篇 2023-05-21

发表评论

登录后才能评论

评论列表(0条)

保存