Profile多环境支持|学习笔记

简介: 快速学习Profile多环境支持

开发者学堂课程【SpringBoot快速掌握 - 核心技术:Profile多环境支持 】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/612/detail/9228


Profile多环境支持

目录

一、 多 Profile 文件

二、 多 profile 文档块方式

三、 激活指定 profile

 

一、多 Profile 文件

Profile 其实是 Spring 用来做多环境支持的。因为在开发、测试、运行的时候,很可能这个配置文件会有一些变化。那么为了方便的切换环境,比如开发人员用开发环境,项目发布后用生产环境,测试期间用测试环境,为了方便的切换, Spring 提供了 Profile 功能。 Profile 功能怎么用呢?第一种在写配置文件的时候,配置文件后边可以-加上环境标识,所以第一种可以用多 Profile 文件的方式:

在主配置文件编写的时候,文件名可以是 application-{profile}.properties/yml ,带上 Profile 标识就可以动态切换。并且默认使用 application.properties 的配置。

举个例子:

在 appliction.properties 这个配置下:

server.port=8081

# idea, properties配置文件utf-8

# person

person.last-name=张三${random.uuid}

person.age=${random.int}

person.birth=2017/12/15

person.boss=false

person.maps.k1=v1

person.maps.k2=14

person.lists=a,b,c

person.dog.name=${person.hello:hello}_dog

person.dog.age=15

由 server.port=8081 可以看出主配置文件端口号是 8081。

写一个配置为 application-dev.properties 是在开发环境下,设置一个端口号为8082:server.port=8082。再写一个配置加上 profile 标识 application-prod.properties 叫做生产环境,设置一个端口号为80端口:server.port=80 。现在就相当于配置了不同环境的配置文件,那么默认取消的是哪个端口呢?来测试一下:启动 SpringBoot 应用来看它用的是哪个端口号:

package com.atguigu.springboot;

import ...

//@ImportResource(Locations = {"cLasspath : beans.xml"})

@SpringBootApplication

public class SpringBoot02ConfigApplication {

public static void main(String[] args) {

SpringApplication.run(SpringBoot02ConfigApplication.class,args);

}

}

可以看到它现在使用的是默认的 8081 端口:Tomcat started on port(s):8081(http)。

 

二、yml 支持多文档块方式

如果用 yml 文件作为配置文件,它还有一个更简单的方式叫多文档块。

server:

port: 8081

spring:

profiles:

active: prod

---

server:

port: 8083

spring:

profiles: dev

---

server:

port: 8084

spring:

profiles: prod  #指定属于哪个环境

这里以 application.yml 作为主配置文件。以前需要写出两种配置文件在主配置文件激活,现在只写一个 yml 文件。

yml 文件有一种语法叫文档块,即当在用三个横线回车以后会发现:上边叫 document1 ,下边叫 document2 ,如果能再回车,那再在下边就是 document3 、 document4 等。因为能分成很多文档块,所以就用这些文档块来定义每一个数据。比如第二个文档块定义这个端口号为8083,第三个文档块定义为8084,但是8083可以写一个配置为 spring:profiles: dev ,是 dev 环境;8084配置为 spring:profiles: prod ,是 product 环境。这样就相当于为每一个文档块定义它是什么环境下的东西。激活则在上面的文档块激活,输入 spring:profiles:active: dev  激活 dev ,如果一切正常就是 Tomcat started on port(s):8083(http) 即8083端口。

切换激活 product:spring:profiles:active:prod 就是 Tomcat started on port(s):8084(http)8084 端口。

这就是使用 yml 里面的文档块模式,不需要写那么多的配置文件,就更简单了。

 

三、激活指定 profile

那么何时开发、测试、包括生产环境可以得到运行呢?

1. 在配置文件中指定 spring.profile.active=dev

在默认配置文件中输入 spring.profile.active=dev 激活开发环境,再次启动可以看到端口号变成了8082:Tomcat started on port(s):8082(http)。

server.port=8081

spring.profiles.active=dev

# idea, properties配置文件utf-8

# person

person.last-name=张三${random.uuid}

person.age=${random.int}

person.birth=2017/12/15

person.boss=false

person.maps.k1=v1

person.maps.k2=14

person.lists=a,b,c

person.dog.name=${person.hello:hello}_dog

person.dog.age=15

2.命令行

a):命令行参数激活,使用 --spring.profiles.active=dev。在 Edit Configurations... 里的 Program arguments 配置:-- spring.profiles.active=dev 运行,在运行的时候加了命令行参数,那么dev就相当于被激活了,虽然看着是运行 prod ,实际上在命令行里改掉了,所以这里是 Tomcat started on port(s):8083(http) 。即8083端口。

b):可以直接在测试的时候,配置传入命令行参数。由于项目最终会被打包,那么就把这个项目打包成 package ,打包完成在 target 目录下的一个 .jar 压缩包,在路径下输入 cmd ,用命令行的方式执行,输入 java -jar spring-boot-02-config-0.0.1-SNAPSHOT.jar --spring.profiles.active=dev  回车,指定用8083端口,则输出 Tomcat started on port(s):8083(http) 即8083端口。

3.虚拟机参数

在 Edit Configurations... 里的 VM options 里配置(-Dspring.profiles.active=dev ),依然指定dev,虽然外面指定 pord ,但是命令行指定 dev ,所以输出 Tomcat started on port(s):8083(http) 即8083端口。

相关文章
|
Java Linux Maven
SpringBoot多环境的yml或properties配置,生产环境和开发环境分离(超详细)
SpringBoot多环境的yml或properties配置,生产环境和开发环境分离(超详细)
362 0
|
5月前
|
测试技术
Profile Config 多环境不同配置
Profile Config 多环境不同配置
41 0
|
8月前
|
Java Shell 测试技术
环境切换大法:掌握Spring Boot多套配置与@Profile注解的高级技巧
环境切换大法:掌握Spring Boot多套配置与@Profile注解的高级技巧
174 2
环境切换大法:掌握Spring Boot多套配置与@Profile注解的高级技巧
|
Dubbo Java 测试技术
技术汇总:第十章:Maven Profile动态选择配置文件
技术汇总:第十章:Maven Profile动态选择配置文件
554 0
|
8月前
|
Java Spring 容器
Spring注解驱动开发三切换环境Profile
Spring注解驱动开发三切换环境Profile
58 0
|
Java 数据库连接 Maven
93分布式电商项目 - Maven Profile切换数据库连接配置
93分布式电商项目 - Maven Profile切换数据库连接配置
90 0
|
Java 测试技术 Maven
【SpringBoot学习笔记 三】Profile多环境配置及配置优先级
【SpringBoot学习笔记 三】Profile多环境配置及配置优先级
746 0
|
Java Spring
Spring Boot入门(八) 之Profile多环境支持
Spring Boot入门(八) 之Profile多环境支持
113 0
|
Java 测试技术 开发者
Profile 配置|学习笔记
快速学习 Profile 配置
347 0
Profile 配置|学习笔记
|
SpringCloudAlibaba Java Nacos
Nacos Config的多环境(Profile)配置信息读取
读取`Profile`多环境下`Nacos Config`的配置信息,了解多环境下相同的配置优先级加载问题。