Spring Boot 多环境配置

这篇具有很好参考价值的文章主要介绍了Spring Boot 多环境配置。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


一、项目进行多环境配置的必要性

在实际开发中,应用程序通常需要部署到不同的运行环境中,例如开发环境、测试环境、生产环境等。不同的环境可能需要不同的环境配置,针对这种情况,不可能手动变更配置文件来适应不同的开发环境,通常需要对项目进行多环境配置,Spring Boot框架提供了两种多环境配置的方式,分别是Profile文件多环境配置和@Profile注解多环境配置。同时,会额外讲解在Spring Boot配置文件中设置属性时,除了可以像前面示例中显示的配置属性值外,还可以使用随机值和参数间引用对属性值进行设置。

二、使用Profile文件进行多环境配置

(一)创建Spring Boot项目

使用Spring Initializr模板创建Spring Boot项目——ProfileDemo01,配置好后,单击【Next】按钮
Spring Boot 多环境配置

选择Spring Boot版本,添加相关依赖
Spring Boot 多环境配置
单击【Create】按钮
Spring Boot 多环境配置

(二)创建多环境配置文件

配置文件命名格式:application-xxx.yaml

此例仅演示端口号与虚拟路径的配置,实际应用中可以配置许多内容

1、全局配置文件改名

将application.properties更名为application.yaml
Spring Boot 多环境配置

2、模拟开发环境

在resources里创建配置文件 - application-dev.yaml
Spring Boot 多环境配置

# 配置服务器
server:
  port: 8081
  servlet:
    context-path: /lzy01

3、模拟测试环境

在resources里创建配置文件 - application-test.yaml
Spring Boot 多环境配置

# 配置服务器
server:
  port: 8082
  servlet:
    context-path: /lzy02

4、模拟生产环境

在resources里创建配置文件 - application-prod.yaml
Spring Boot 多环境配置

# 配置服务器
server:
  port: 8083
  servlet:
    context-path: /lzy03

(三)创建控制器

在net.army.boot包里创建controller子包,在子包里创建ProfileController类
Spring Boot 多环境配置

package net.army.boot.controller;

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 * 作者:梁辰兴
 * 日期:2023/5/31
 * 功能:概况控制器
 */
@RestController
public class ProfileController {
    @GetMapping("/welcome")
    public String welcome() {
        return "<h1 style='color: red; text-align: center'>欢迎访问Spring Boot世界~</h1>";
    }
}

(四)采用默认环境

默认采用配置文件application.yaml,启动服务器,访问:http://localhost:8080/welcome
Spring Boot 多环境配置

(五)指定使用环境

方式1、使用配置文件全局指定使用环境

(1) 在全局配置文件里指定当前使用环境 - 开发环境

Spring Boot 多环境配置

spring: profiles: active: dev,表明当前生效的环境配置文件是application-dev.yaml

启动项目,查看采用的使用环境:服务器端口号与虚拟路径
Spring Boot 多环境配置
访问:http://localhost:8081/lzy01/welcome
Spring Boot 多环境配置

(2) 在全局配置文件里指定当前使用环境 - 测试环境

Spring Boot 多环境配置

spring: profiles: active: test,表明当前生效的环境配置文件是application-test.yaml

启动项目,查看采用的使用环境:服务器端口号与虚拟路径
Spring Boot 多环境配置
访问:http://localhost:8082/lzy02/welcome
Spring Boot 多环境配置

(3) 在全局配置文件里指定当前使用环境 - 生产环境

Spring Boot 多环境配置

spring: profiles: active: prod,表明当前生效的环境配置文件是application-prod.yaml

启动项目,查看采用的使用环境:服务器端口号与虚拟路径
Spring Boot 多环境配置
访问:http://localhost:8083/lzy03/welcome
Spring Boot 多环境配置

方式2、通过命令行方式指定使用环境

(1)使用IDEA将Maven项目打成jar包

Maven - ProfileDemo01 - LifeCycle - package,单击右键,在快捷菜单里执行“Run Maven Build”
Spring Boot 多环境配置
Spring Boot 多环境配置

(2)在终端执行jar包,选择使用环境 - 开发环境
D:\Projects\SpringBootProjects\ProfileDemo01> cd target
D:\Projects\SpringBootProjects\ProfileDemo01\target> java -jar ProfileDemo01-0.0.1-SNAPSHOT.jar --spring.profiles.active=dev

Spring Boot 多环境配置

(3)在终端执行jar包,选择使用环境 - 测试环境
D:\Projects\SpringBootProjects\ProfileDemo01> cd target
D:\Projects\SpringBootProjects\ProfileDemo01\target> java -jar ProfileDemo01-0.0.1-SNAPSHOT.jar --spring.profiles.active=test

Spring Boot 多环境配置

(4)在终端执行jar包,选择使用环境 - 生产环境
D:\Projects\SpringBootProjects\ProfileDemo01> cd target
D:\Projects\SpringBootProjects\ProfileDemo01\target> java -jar ProfileDemo01-0.0.1-SNAPSHOT.jar --spring.profiles.active=prod

Spring Boot 多环境配置

三、使用@Profile注解进行多环境配置

如果项目可能用到三种不同的数据库环境,比如MySQL、Oracle和Sybase,那么我们如何利用@Profile注解来实现多数据库环境配置呢?

(一)创建Spring Boot项目ProfileDemo02

使用Spring Initializr模板创建Spring Boot项目——ProfileDemo02,配置好后,单击【Next】按钮

Spring Boot 多环境配置选择Spring Boot版本,添加相关依赖
Spring Boot 多环境配置

单击【Create】按钮

Spring Boot 多环境配置将项目进行热部署
Spring Boot 多环境配置

(二)创建数据库配置接口DatabaseConfig

在net.army.boot里创建config子包,在子包里创建DatabaseConfig接口
Spring Boot 多环境配置

package net.army.boot.config;

/**
 * 作者:梁辰兴
 * 日期:2023/5/31
 * 功能:数据库配置接口
 */
public interface DatabaseConfig {
    void connect();
}

(三)创建三个数据库配置实现类

1、创建数据库配置实现类MySQLConfig

在net.army.boot.config包里创建impl子包,在子包里创建MySQLConfig类
Spring Boot 多环境配置

package net.army.boot.config.impl;

import net.army.boot.config.DatabaseConfig;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Profile;

/**
 * 作者:梁辰兴
 * 日期:2023/5/31
 * 功能:MySQL数据库配置实现类
 */
@Configuration // 标识为配置类
@Profile("mysql") // 指定使用环境名称
public class MySQLConfig implements DatabaseConfig {

    @Override
    public void connect() {
        System.out.println("项目使用MySQL数据库环境~");
    }
}

2、创建数据库配置实现类OracleConfig

在net.army.boot.config.impl包里创建OracleConfig类
Spring Boot 多环境配置

package net.army.boot.config.impl;

import net.army.boot.config.DatabaseConfig;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Profile;

/**
 * 作者:梁辰兴
 * 日期:2023/5/31
 * 功能:Oracle数据库配置类
 */
@Configuration // 标识为配置类
@Profile("oracle") // 指定使用环境名称
public class OracleConfig implements DatabaseConfig {
    @Override
    public void connect() {
        System.out.println("项目使用Oracle数据库环境~");
    }
}

3、创建数据库配置实现类SybaseConfig

在net.army.boot.config.impl包里创建SybaseConfig类
Spring Boot 多环境配置

package net.army.boot.config.impl;

import net.army.boot.config.DatabaseConfig;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Profile;

/**
 * 作者:梁辰兴
 * 日期:2023/5/31
 * 功能:Sybase数据库配置类
 */
@Configuration // 标识为配置类
@Profile("sybase") // 指定使用环境名称
public class SybaseConfig implements DatabaseConfig {
    @Override
    public void connect() {
        System.out.println("项目使用Sybase数据库环境~");
    }
}

(四)在全局配置文件里设置使用环境

在全局配置文件application.properties里配置使用环境
Spring Boot 多环境配置

(五)打开测试类,编写测试方法

打开自带的测试类ProfileDemo02ApplicationTests
Spring Boot 多环境配置
注入数据配置实体,调用数据库配置实体的方法

package net.army.boot;

import net.army.boot.config.DatabaseConfig;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;

@SpringBootTest
class ProfileDemo02ApplicationTests {
    @Autowired // 注入数据库配置实体
    private DatabaseConfig databaseConfig;

    @Test
    void contextLoads() {
        // 调用数据库配置实体的方法
        databaseConfig.connect();
    }
}

(六)运行测试方法,查看结果

运行contextLoads()测试方法,查看结果
Spring Boot 多环境配置Spring Boot 多环境配置

练习

1、设置使用环境 - MySQL数据库环境,并测试

2、设置使用环境 - Sybase数据库环境,并测试

四、随机值设置以及参数间引用

(一)创建Spring Boot Web项目RandomSetDemo

使用Spring Initializr模板创建Spring Boot项目
Spring Boot 多环境配置
单击【Next】按钮,选择Spring Boot版本,添加相关依赖
Spring Boot 多环境配置
单击【Create】按钮
Spring Boot 多环境配置

(二)在全局配置文件里配置随机值

在application.properties文件里配置
Spring Boot 多环境配置

#一个随机值
lzy.value=${random.value}
#一个随机整数
lzy.integer=${random.int}
#一个长整型随机数
lzy.long=${random.long}
#获取一个随机UUID值
lzy.uuid=${random.uuid}
#小于10的随机整数
lzy.number.less=${random.int(10)}
#随机产生102465535之间的数
lzy.number.range=${random.int[1024,65535]}

(三)在测试类里测试配置的随机数

打开自带的测试类 - RandomSetDemoApplicationTests
Spring Boot 多环境配置

1、测试随机数my.number

注入配置文件里的属性

输出配置文件里的属性

package net.army.boot;

import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.test.context.SpringBootTest;

@SpringBootTest
class RandomSetDemoApplicationTests {
    // 注入配置文件里的随机值
    @Value("${lzy.value}")
    private String value;

    @Test
    public void testRandomValue() {
        // 输出配置文件里的随机值
        System.out.println("随机值:" + value);
    }
}

运行testRandonValue()方法,查看结果
Spring Boot 多环境配置大家可以看到,产生的是32位的十六进制数对应的字符串,思考一下,能否将其变成128位的二进制串?

2、测试随机整数my.integer

注入配置文件里的属性

输出配置文件里的属性
Spring Boot 多环境配置
运行testRandomInteger()方法,查看结果
Spring Boot 多环境配置
再运行testRandomInteger()方法,查看结果
Spring Boot 多环境配置

练习

1、测试长整型随机数my.long

Spring Boot 多环境配置

2、测试随机UUID值my.uuid

Spring Boot 多环境配置

3、测试小于10的随机整数my.number.less

Spring Boot 多环境配置
Spring Boot 多环境配置

4、测试1024至65535之间的随机整数my.number.rangeSpring Boot 多环境配置

(四)演示参数间的引用

在appication.properties文件里,后定义的属性可引用前面定义的属性

定义三个属性year、month和day

定义属性user.name

定义属性user.birthday,引用属性year、month和day
Spring Boot 多环境配置

# 配置日期数据
year=2001
month=8
day=28
# 配置用户信息
user.name=梁辰兴
user.birthday=${year}年${month}月${day}

在测试类里编写testUser()方法
Spring Boot 多环境配置
运行testUser()方法,查看结果
Spring Boot 多环境配置
有点问题,明明在配置文件里,user.name=梁辰兴,但结果并非如此,原因何在?

user.name得到是系统用户名,而不是配置文件里定义的用户名。

修改配置文件,不使用user前缀,改用person前缀
Spring Boot 多环境配置
修改测试代码
Spring Boot 多环境配置
运行testUser()方法,查看结果
Spring Boot 多环境配置文章来源地址https://www.toymoban.com/news/detail-477938.html

到了这里,关于Spring Boot 多环境配置的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 分布式操作系统的必要性及重要性

    总有人在各个平台留言或者私信问LAXCUS分布式操作系统的各种问题,尤其是关于分布式操作系统的应用市场、价值、意义之类的问题。我们团队做LAXCUS分布式操作系统,也不是头脑凭空发热,是基于我们之前的大量产品设计、经验逐渐一步步做起来。当今已经进入智能时代,

    2024年02月08日
    浏览(55)
  • typescript的必要性及使用

    作为一个前端语言,Javascript从最初只是用来写页面,到如今的移动终端、后端服务、神经网络等等,它变得几乎无处不在。如此广阔的应用领域,对语言的安全性、健壮性以及可维护性都有了更高的要求。尽管ECMAScript标准在近几年有了长足的进步,但是在类型检查方面依然

    2024年02月11日
    浏览(34)
  • 实验室信息化建设必要性

    市场监管总局2021年9月14日发布《关于进一步深化改革促进检验检测行业做优做强的指导意见》明确到2025年,检验检测体系更加完善,创新能力明显增强,发展环境持续优化,行业总体技术能力、管理水平、服务质量和公信力显著提升,涌现一批规模效益好、技术水平高、行

    2024年02月11日
    浏览(57)
  • 暴雨灾害频发,防洪评价与洪水建模预测的必要性

    防洪评价全流程与报告编制及HEC-RAS水动力模型实际工程应用 核心优势: 1、根据防评导则要求,制定及编排课程内容。较以往其他不同,本课程实现了全过程、全阶段的防评内容培训, 共6全天授课,是目前关于防洪评价最详细的课程 。学员参加本次课程后,可直接上手,可

    2024年02月12日
    浏览(33)
  • 图文讲解Redis延时双删原因及必要性

    目录 一、前言 二、常见更新策略 2.1 先删缓存,再更新数据库 2.2 先更新数据库,再删除缓存 2.3 普通双删 2.4 延迟双删 三、是否必要建议 我们在实际项目中经常会使用到Redis缓存用来缓解数据库压力,但是当更新数据库时,如何保证缓存及数据库一致性,一般我们采用延时

    2024年02月16日
    浏览(38)
  • 软件安全测试包含哪些内容和方法?安全测试报告的必要性

    软件安全测试是一种通过模拟真实攻击的方式,对软件系统进行全面的安全性评估和测试,以发现潜在的安全漏洞和弱点,是确保软件系统安全性的重要措施。在进行软件安全测试时,我们需要了解测试的内容和方法,以及为什么进行安全测试报告的必要性。 一、软件安全测

    2024年02月09日
    浏览(48)
  • 谈一谈前端私有组件库的必要性(组件库系列一)

    工作多年遇到各种各样的项目,往往在固定的岗位或者说固定的业务部门,同类型的项目出现的频率极高。很多同学对于组件库这个概念更多的使用场景,可能是拿到开源的一些组件库开箱即用。如PC端的ElementUI、Ant-design、移动端的vant之类的。这些开源的组件库能够很大程度

    2024年02月07日
    浏览(34)
  • 企业开展开源安全治理必要性及可行性详细分析,疯狂涨知识

    面对以上五个严重的挑战,从企业解决的角度来说,可以聚焦为三个主要应对举措: 多做行业头部最佳实践调研:其实近两年,互联网、金融、运营商、智能制造等多个行业的头部企业,还是有不少企业在开源安全治理方面已经有自己的一些最佳实践和成功经验了。虽然说不

    2024年04月11日
    浏览(46)
  • 高防服务器面对DDOS攻击的威胁有何必要性

    高防服务器面对DDOS攻击的威胁有何必要性?分布式拒绝服务(DDoS)攻击是一种常见而危险的网络攻击形式,它可以使目标网络服务器过载,导致服务不可用。本文将深入探讨DDoS攻击的威胁,以及高防服务器在抵御这种攻击中的重要性。了解DDoS攻击的威胁和采取相应的防护措

    2024年02月10日
    浏览(47)
  • 计算机网络——计算机网络体系结构(2/4)-分层的必要性(五层协议原理体系结构)

    目录 物理层 数据链路层 网络层 运输层 应用层 计算机网络是个非常复杂的系统。 早在最初的ARPANET设计时就提出了分层的设计理念。 \\\"分层\\\"可将庞大而复杂的问题,转化为若干较小的局部问题,而这些较小的局部问题就比较易于研究和处理。 下面,我们以五层原理结构体系

    2024年02月07日
    浏览(59)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包