Spring Boot - Profile配置

Profile是什么

Profile我也找不出合适的中文来定义,简单来讲,Profile就是Spring Boot能够对不一样环境或者指令来读取不一样的配置文件。java

Profile使用

假若有开发、测试、生产三个不一样的环境,须要定义三个不一样环境下的配置。mysql

基于properties文件类型

你能够另外创建3个环境下的配置文件:spring

applcation.properties
application-dev.properties
application-test.properties
application-prod.propertiessql

而后在applcation.properties文件中指定当前的环境: spring.profiles.active=test
这时候读取的就是application-test.properties文件。微信

基于yml文件类型

只须要一个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代码

在JAVA配置代码中也能够加不一样Profile下定义不一样的配置文件,@Profile注解只能组合使用@Configuration和@Component注解。this

@Configuration
@Profile("prod")
public class ProductionConfiguration {

    // ...

}

指定Profile

main方法启动方式:

// 在Eclipse Arguments里面添加
--spring.profiles.active=prod

插件启动方式:

spring-boot:run -Drun.profiles=prod

jar运行方式:

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));
}

推荐:Spring Boot & Cloud 最强技术教程

扫描关注咱们的微信公众号,干货天天更新。

image

相关文章
相关标签/搜索