Spring boot结合Maven实现不同环境的配置
配置文件层次:
pom.xml
1 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 2 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 3 <modelVersion>4.0.0</modelVersion> 4 5 <groupId>com.yanwu.www</groupId> 6 <artifactId>Spring-Env</artifactId> 7 <version>0.0.1-SNAPSHOT</version> 8 <packaging>jar</packaging> 9 10 <name>example</name> 11 <url>http://maven.apache.org</url> 12 13 <parent> 14 <groupId>org.springframework.boot</groupId> 15 <artifactId>spring-boot-starter-parent</artifactId> 16 <version>1.5.6.RELEASE</version> 17 <relativePath/> <!-- lookup parent from repository --> 18 </parent> 19 20 <properties> 21 <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 22 </properties> 23 24 <dependencies> 25 <dependency> 26 <groupId>junit</groupId> 27 <artifactId>junit</artifactId> 28 <version>3.8.1</version> 29 <scope>test</scope> 30 </dependency> 31 <!-- web --> 32 <dependency> 33 <groupId>org.springframework.boot</groupId> 34 <artifactId>spring-boot-starter-web</artifactId> 35 </dependency> 36 </dependencies> 37 38 <profiles> 39 <profile> 40 <!-- 本地开发环境 --> 41 <id>dev</id> 42 <properties> 43 <profiles.active>dev</profiles.active> 44 </properties> 45 <activation> 46 <activeByDefault>true</activeByDefault> 47 </activation> 48 </profile> 49 <profile> 50 <!-- 测试环境 --> 51 <id>sit</id> 52 <properties> 53 <profiles.active>sit</profiles.active> 54 </properties> 55 </profile> 56 <profile> 57 <!-- 生产环境 --> 58 <id>pro</id> 59 <properties> 60 <profiles.active>pro</profiles.active> 61 </properties> 62 </profile> 63 64 </profiles> 65 66 <build> 67 <filters> 68 <filter>src/main/resources/env/${profiles.active}/application.yml</filter> 69 </filters> 70 <!-- 替换${key}内容 --> 71 <resources> 72 <resource> 73 <filtering>true</filtering> 74 <!--要到达最底层目录--> 75 <directory>src/main/resources/env/${profiles.active}</directory> 76 </resource> 77 </resources> 78 </build> 79 80 81 82 83 84 </project>
带有${key}的配置文件:
/Spring-Env/src/main/resources/application.yml
1 #激活的环境配置 2 spring: 3 profiles: 4 active: ${spring.profiles.active} 5 #端口 6 server: 7 port: ${server.port}
配置文件一:
src/main/resources/env/pro/application.yml
1 server: 2 port: 8083 3 env: pro 4 5 ftp: hello pro 6 7 spring: 8 profiles: 9 active: pro
配置文件二:
src/main/resources/env/dev/application.yml
1 server: 2 port: 8084 3 4 ftp: hello dev 5 6 spring: 7 profiles: 8 active: dev
配置文件三:
src/main/resources/env/sit/application.yml
1 server: 2 port: 8082 3 env: sit 4 ftp: hello sit 5 6 spring: 7 profiles: 8 active: sit
运行Spring boot主程序即可实现!
测试程序:
1 @RestController 2 public class SampleController { 3 4 @Autowired 5 private Environment env; 6 7 @RequestMapping("/sample") 8 public String sample(){ 9 10 return "spring boot success ! and profile is ==>"+ 11 env.getProperty("spring.profiles.active")+"=====>"+ 12 env.getProperty("ftp"); 13 } 14 }
maven打包:
mvn clean install -P pro
maven打包:
mvn clean install -P sit
注:maven打包也可以使用eclipse的maven插件