当使用环境属性时,如果其名称后缀与我愿意运行的配置文件相匹配,我需要从加载YML文件的YML文件加载它们。
我在某个项目中看到了这个结构,但我似乎无法在空白测试项目中重新创建它:
application.yml
应用dev.yml
application-acc.yml
等。
运行spring boot app时会加载一个匹配的 -P 参数。
当我尝试在我自己的新项目上重现行为时 - 只加载 application.yml 。所有其他文件都被忽略了......
我不希望破折号将单个文件中的个人资料分开 - 我希望通过使用我已经看过的结构来明确分离。
我缺少什么,为什么没有加载其他配置文件依赖的YML?(我使用的是最新版本,因此旧的bug(1.0.0 Spring Boot)不适用于我)。
以防maven pom。
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<properties>
<java.version>1.8</java.version>
</properties>
<groupId>Application</groupId>
<artifactId>Base</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>pom</packaging>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.1.3.RELEASE</version>
</parent>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>org.hsqldb</groupId>
<artifactId>hsqldb</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.yaml</groupId>
<artifactId>snakeyaml</artifactId>
<version>1.13</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<mainClass>com.app.config.SpringConfiguration</mainClass>
</configuration>
</plugin>
</plugins>
</build>
</project>
答案 0 :(得分:0)
你说&#34; -P&#34;但这是一个Maven功能而不是Spring功能。要设置Spring配置文件,您可以使用System属性(-Dspring.profiles.active=dev
)或环境变量(SPRING_PROFILES_ACTIVE=dev
)或SpringApplication
API。