Spring Boot

Stella981
• 阅读 551

Spring Boot

Profile是什么

Profile我也找不出合适的中文来定义,简单来说,Profile就是Spring Boot可以对不同环境或者指令来读取不同的配置文件。

Profile使用

假如有开发、测试、生产三个不同的环境,需要定义三个不同环境下的配置。

基于properties文件类型

你可以另外建立3个环境下的配置文件:

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

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

基于yml文件类型

只需要一个applcation.yml文件就能搞定,推荐此方式。

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.profiles.active: prod,proddb,prodmq

基于Java代码

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

@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 最强技术教程

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

Spring Boot

点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
待兔 待兔
5个月前
手写Java HashMap源码
HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22
Stella981 Stella981
3年前
SpringBoot 中 @SpringBootApplication注解背后的三体结构探秘
!Profile(https://uploadimages.jianshu.io/upload_images/982424765c07db4e6eb5ceb.jpg?imageMogr2/autoorient/strip%7CimageView2/2/w/1240)概述SpringBoot约定大于配置的功
Stella981 Stella981
3年前
Spring Boot项目利用MyBatis Generator进行数据层代码自动生成
!Profile(https://uploadimages.jianshu.io/upload_images/9824247e1c1aaedc60d891f.jpg?imageMogr2/autoorient/strip%7CimageView2/2/w/1240)概述MyBatisGenerator(简称MB
Stella981 Stella981
3年前
Spring Boot 集成 MyBatis和 SQL Server实践
!Profile(https://uploadimages.jianshu.io/upload_images/9824247e4105fb3034464fa.jpg?imageMogr2/autoorient/strip%7CimageView2/2/w/1240)文章共509字,阅读大约需要2分钟!概述
Stella981 Stella981
3年前
Spring Boot Admin 2.0开箱体验
!Profile(https://uploadimages.jianshu.io/upload_images/9824247a282bed129783bfc.jpeg?imageMogr2/autoorient/strip%7CimageView2/2/w/1240)概述在我之前的《SpringBoot应用监控实战
Stella981 Stella981
3年前
Eureka Server 开启Spring Security Basic认证
!Desktop(https://uploadimages.jianshu.io/upload_images/98242475ce94f98ae00f42f.jpg?imageMogr2/autoorient/strip%7CimageView2/2/w/1240)文章共503字,阅读大约需要2分钟!概述
Stella981 Stella981
3年前
EVCache缓存在 Spring Boot中的实战
!Profile(https://uploadimages.jianshu.io/upload_images/98242471808cf037d128163.jpg?imageMogr2/autoorient/strip%7CimageView2/2/w/1240)文章共727字,阅读大约需要2分钟!概述
Stella981 Stella981
3年前
Redis字符串类型内部编码剖析
!Profile(https://uploadimages.jianshu.io/upload_images/98242472886155261a81da7.jpg?imageMogr2/autoorient/strip%7CimageView2/2/w/1240)概述我们平时用Redis都是处于用户层面,我们可能会不
Stella981 Stella981
3年前
Nginx服务器开箱体验
!profile(http://uploadimages.jianshu.io/upload_images/9824247c51f55d65a82fcb3.jpg?imageMogr2/autoorient/strip%7CimageView2/2/w/1240)概述Nginx是高性能的轻量级WEB服务器,