Profile我也找不出合适的中文来定义,简单来讲,Profile就是Spring Boot能够对不一样环境或者指令来读取不一样的配置文件。java
假若有开发、测试、生产三个不一样的环境,须要定义三个不一样环境下的配置。mysql
你能够另外创建3个环境下的配置文件:spring
applcation.properties
application-dev.properties
application-test.properties
application-prod.propertiessql
而后在applcation.properties文件中指定当前的环境: spring.profiles.active=test
这时候读取的就是application-test.properties文件。微信
只须要一个applcation.yml文件就能搞定,推荐此方式。app
spring: profiles: active: prod --- spring: profiles: dev server: port: 8080 --- spring: profiles: test server: port: 8081 --- spring.profiles: prod spring.profiles.include: - proddb - prodmq server: port: 8082 --- spring: profiles: proddb db: name: mysql --- spring: profiles: prodmq mq: address: localhost
此时读取的就是prod的配置,prod包含proddb,prodmq,此时能够读取proddb,prodmq下的配置。spring-boot
也能够同时激活三个配置。测试
spring.profiles.active: prod,proddb,prodmq
在JAVA配置代码中也能够加不一样Profile下定义不一样的配置文件,@Profile注解只能组合使用@Configuration和@Component注解。this
@Configuration @Profile("prod") public class ProductionConfiguration { // ... }
// 在Eclipse Arguments里面添加 --spring.profiles.active=prod
spring-boot:run -Drun.profiles=prod
java -jar xx.jar --spring.profiles.active=prod
除了在配置文件和命令行中指定Profile,还能够在启动类中写死指定,经过SpringApplication.setAdditionalProfiles方法。插件
SpringApplication.class
public void setAdditionalProfiles(String... profiles) { this.additionalProfiles = new LinkedHashSet<String>(Arrays.asList(profiles)); }
扫描关注咱们的微信公众号,干货天天更新。