系统中有很多的配置数据需要在配置文件中,咱们总不能全部写在application.yml中,即使写了application-dev.yml,application-test.yml,application-prod.yml这些文件,但是还是需要把所有的配置写在对应的文件中,只是环境不同,属性值不同罢了,但是这样会导致我们得配置文件中的数据会很多,比较乱!接下来使用另一种方式:
logback-spring.xml 是spring需要的日志,这里没有做特殊处理,就直接按照默认的来就行了,就叫这个名字即可.
resource 下的config 下有三个环境,现在根据不同的环境打包不同的配置到target;
pom的配置如下:
我把主要的pom代码块贴出来
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<excludes>
<exclude>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
</exclude>
</excludes>
</configuration>
</plugin>
</plugins>
<resources>
<resource>
<!--将config文件夹下面的指定环境下的的所有文件,打包到config下面-->
<directory>src/main/resources/config/${env}</directory>
<targetPath>${project.build.directory}/classes/config</targetPath>
</resource>
<resource>
<directory>src/main/resources</directory>
<includes>
<!--主启动yml-->
<include>bootstrap.yml</include>
<!--mybatis 打包生成的文件位置,也要打进去-->
<include>mapper/**/*</include>
</includes>
</resource>
</resources>
</build>
<profiles>
<profile>
<!-- 本地开发环境 -->
<id>dev</id>
<properties>
<env>dev</env>
</properties>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
</profile>
<!-- 测试环境 -->
<profile>
<id>test</id>
<properties>
<env>test</env>
</properties>
</profile>
<!-- 生产环境 -->
<profile>
<id>prod</id>
<properties>
<env>prod</env>
</properties>
</profile>
</profiles>
结果:
由于spring默认读取application.yml,我们上面只是打包实现了把相应的文件打到target,但是application-datasource.yml 和 application-redis.yml 的数据是读不到的!因此需要在application.yml中添加包含哪些配置文件,这要是为啥要用application-xxx.yml 的格式
这样,spring的上下文环境中在启动的时候就会把我们在这里配置的相应的文件加载进上下文的属性环境中去,然后我们就能利用spring注解形式或者 springboot 的注解@ConfigurationProperties类使用我们在配置文件中配置的数据了!
如有不当之处,烦请大佬赐教 一个简单的方式,感谢!共同进步!