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配置,生产环境和开发环境分离(超详细)
329 0
|
Java 数据库 Redis
yml中某些配置不生效的解决方案
起因 将springboot项目的properties配置文件改为yml之后redis死活连不上了。 找问题 springboot的配置文件有两种方式:properties和yml,之前properties时候是没有任何问题的,那么来看一下yml的配置...
1851 0
|
21天前
|
存储 安全 API
利用环境变量管理配置:最佳实践与技巧
本文介绍了如何利用环境变量管理应用程序配置,涵盖安全性、灵活性和简化部署等方面的优势。详细探讨了最佳实践,包括避免敏感信息泄露、使用`.env`文件、环境特定配置、环境变量注入与验证,以及使用第三方服务。同时分享了一些实用技巧,如分层管理、环境变量加密和版本控制。旨在帮助开发者更高效、安全地管理应用配置。
|
2月前
|
Windows
XYNTservice是什么工具?如何进行配置使用?
【10月更文挑战第6天】XYNTservice是什么工具?如何进行配置使用?
38 1
|
5月前
|
运维 Kubernetes Serverless
Serverless 应用引擎使用问题之s.yaml文件中如何使用外部环境变量
阿里云Serverless 应用引擎(SAE)提供了完整的微服务应用生命周期管理能力,包括应用部署、服务治理、开发运维、资源管理等功能,并通过扩展功能支持多环境管理、API Gateway、事件驱动等高级应用场景,帮助企业快速构建、部署、运维和扩展微服务架构,实现Serverless化的应用部署与运维模式。以下是对SAE产品使用合集的概述,包括应用管理、服务治理、开发运维、资源管理等方面。
|
4月前
|
测试技术
Profile Config 多环境不同配置
Profile Config 多环境不同配置
34 0
|
5月前
|
存储 开发框架 JavaScript
深入理解与应用:框架中的环境变量管理
【7月更文挑战第4天】在现代软件开发中,环境变量扮演着至关重要的角色,尤其是在多环境部署和配置管理的场景下。它们允许开发者在不修改代码的情况下,根据不同的环境(如开发、测试、生产)调整应用的行为和配置。本文将探讨如何在常见的Web开发框架中高效地使用环境变量,并通过代码示例展示其应用,以Django和Node.js的Express框架为例。
98 1
|
5月前
|
JSON Go API
go项目实现通过配置文件进行配置项统一管理
go项目实现通过配置文件进行配置项统一管理
33 0
|
7月前
|
Java Spring 容器
Spring注解驱动开发三切换环境Profile
Spring注解驱动开发三切换环境Profile
54 0
|
Dubbo Java 测试技术
技术汇总:第十章:Maven Profile动态选择配置文件
技术汇总:第十章:Maven Profile动态选择配置文件
532 0