企业级信息系统开发讲课笔记4.5 掌握Spring Boot多环境配置

news2024/11/25 1:02:36

文章目录

  • 零、学习目标
  • 一、项目进行多环境配置的必要性
  • 二、使用Profile文件进行多环境配置
    • (一)创建Spring Boot项目
    • (二)创建多环境配置文件
      • 1、全局配置文件改名
      • 2、模拟开发环境
      • 3、模拟测试环境
      • 4、模拟生产环境
    • (三)创建控制器
    • (四)采用默认环境
    • 2023-5-30 更新到此
    • (五)指定使用环境
      • 方式1、使用配置文件全局指定使用环境
        • (1) 在全局配置文件里指定当前使用环境 - 开发环境
        • (2) 在全局配置文件里指定当前使用环境 - 测试环境
        • (3) 在全局配置文件里指定当前使用环境 - 生产环境
      • 方式2、通过命令行方式指定使用环境
        • (1)使用IDEA将Maven项目打成jar包
        • (2)在终端执行jar包,选择使用环境 - 开发环境
        • (3)在终端执行jar包,选择使用环境 - 测试环境
        • (4)在终端执行jar包,选择使用环境 - 生产环境
  • 三、使用@Profile注解进行多环境配置
    • (一)创建Spring Boot Web项目ProfileDemo02
    • (二)创建数据库配置接口DatabaseConfig
    • (三)创建三个数据库配置实现类
      • 1、创建数据库配置实现类MySQLConfig
      • 2、创建数据库配置实现类OracleConfig
      • 3、创建数据库配置实现类SybaseConfig
    • (四)在全局配置文件里设置使用环境
    • (五)打开测试类,编写测试方法
    • (六)运行测试方法,查看结果
    • 课堂练习
      • 1、设置使用环境 - MySQL数据库环境,并测试
      • 2、设置使用环境 - Sybase数据库环境,并测试
  • 四、随机值设置以及参数间引用
    • (一)创建Spring Boot Web项目RandomSetDemo
    • (二)在全局配置文件里配置随机值
    • (三)在测试类里测试配置的随机数
      • 1、测试随机数my.number
      • 2、测试随机整数my.integer
    • 课堂练习
      • 1、测试长整型随机数my.long
      • 2、测试随机UUID值my.uuid
      • 3、测试小于10的随机整数my.number.less
      • 4、测试1024至65535之间的随机整数my.number.range
    • (四)演示参数间的引用

零、学习目标

  1. 掌握使用Profile文件进行多环境配置
  2. 掌握使用@Profile注解进行多环境配置
  3. 熟悉随机值设置以及参数间引用

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

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

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

(一)创建Spring Boot项目

  • 基于Spring Initializr模板创建Spring Boot项目
    在这里插入图片描述
  • 配置项目元数据
    在这里插入图片描述
  • 选择Spring Boot版本,添加相关依赖
    在这里插入图片描述
  • 配置项目名称与保存位置
    在这里插入图片描述
  • 单击【Finish】按钮
    在这里插入图片描述
  • 在《企业级信息系统开发讲课笔记4.3》里,我们学习两种格式的全局配置文件:application.propertiesapplication.yaml,本次案例,我们准备采用yaml格式的配置文件。

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

  • 配置文件命名格式:application-xxx.yaml
  • 此例仅演示端口号与虚拟路径的配置,实际应用中可以配置许多内容

1、全局配置文件改名

  • application.properties更名为application.yaml
    在这里插入图片描述

2、模拟开发环境

  • resources里创建配置文件 - application-dev.yaml
    在这里插入图片描述
# 配置服务器
server:
  port: 8081
  servlet:
    context-path: /lzy01

3、模拟测试环境

  • resources里创建配置文件 - application-test.yaml
    在这里插入图片描述
# 配置服务器
server:
  port: 8082
  servlet:
    context-path: /lzy02

4、模拟生产环境

  • resources里创建配置文件 - application-prod.yaml
    在这里插入图片描述
# 配置服务器
server:
  port: 8083
  servlet:
    context-path: /lzy03
  • 查看三个配置文件
    在这里插入图片描述

(三)创建控制器

  • net.huawei.boot包里创建controller子包,在子包里创建ProfileController
    在这里插入图片描述
package net.huawei.boot.controller;

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

/**
 * 功能:概况控制器
 * 作者:华卫
 * 日期:2023年05月30日
 */
@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
    在这里插入图片描述

2023-5-30 更新到此

(五)指定使用环境

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

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

在这里插入图片描述

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

  • 启动项目,查看采用的使用环境:服务器端口号与虚拟路径
    在这里插入图片描述

  • 访问http://localhost:8081/lzy/hello
    在这里插入图片描述

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

在这里插入图片描述

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

  • 启动项目,查看采用的使用环境:服务器端口号与虚拟路径
    在这里插入图片描述

  • 访问http://localhost:8081/lzy/hello
    在这里插入图片描述

  • 访问http://localhost:8082/ied/hello
    在这里插入图片描述

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

在这里插入图片描述

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

  • 启动项目,查看采用的使用环境:服务器端口号与虚拟路径
    在这里插入图片描述

  • 访问http://localhost:8082/ied/hello
    在这里插入图片描述

  • 访问http://localhost:8083/china/hello
    在这里插入图片描述

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

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

  • Maven - ProfileDemo01 - LifeCycle - package,单击右键,在快捷菜单里执行“Run Maven Build”
    在这里插入图片描述
    在这里插入图片描述
  • target目录里查看生成的项目jar包profiledemo01-0.0.1-SNAPSHOT.jar
    在这里插入图片描述

(2)在终端执行jar包,选择使用环境 - 开发环境

D:\IdeaProjects\ProfileDemo01>cd target
D:\IdeaProjects\ProfileDemo01\target>java -jar profiledemo01-0.0.1-SNAPSHOT.jar --spring.profiles.active=dev

在这里插入图片描述
在这里插入图片描述

  • 访问http://localhost:8081/lzy/hello
    在这里插入图片描述
  • Ctrl + C组合键,停止项目的运行
    在这里插入图片描述

(3)在终端执行jar包,选择使用环境 - 测试环境

D:\IdeaProjects\ProfileDemo01\target>java -jar profiledemo01-0.0.1-SNAPSHOT.jar --spring.profiles.active=test

在这里插入图片描述

  • 访问http://localhost:8082/ied/hello
    在这里插入图片描述
  • Ctrl + C组合键,停止项目的运行
    在这里插入图片描述

(4)在终端执行jar包,选择使用环境 - 生产环境

D:\IdeaProjects\ProfileDemo01\target>java -jar profiledemo01-0.0.1-SNAPSHOT.jar --spring.profiles.active=pro

在这里插入图片描述

  • 访问http://localhost:8083/china/hello
    在这里插入图片描述
  • Ctrl + C组合键,停止项目的运行
    在这里插入图片描述

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

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

(一)创建Spring Boot Web项目ProfileDemo02

  • 项目初始化过程可以参看上一讲ConfigDemo01的创建过程
    在这里插入图片描述
  • 将项目进行热部署
    在这里插入图片描述
    在这里插入图片描述

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

  • 在net.hw.lesson05里创建config子包,在子包里创建DatabaseConfig接口
    在这里插入图片描述
package net.hw.lesson05.config;

/**
 * 功能:数据库配置接口
 * 作者:华卫
 * 日期:2021年05月08日
 */
public interface DatabaseConfig {
    void connector();
}

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

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

在这里插入图片描述

package net.hw.lesson05.config;

import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Profile;

/**
 * 功能:MySQL数据库配置类
 * 作者:华卫
 * 日期:2021年05月08日
 */
@Configuration // 指定为配置类
@Profile("mysql") // 指定配置环境名称
public class MySQLConfig implements DatabaseConfig {
    @Override
    public void connector() {
        System.out.println("项目使用MySQL数据库环境!");
    }
}

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

在这里插入图片描述

package net.hw.lesson05.config;

import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Profile;

/**
 * 功能:Oracle数据库配置类
 * 作者:华卫
 * 日期:2021年05月08日
 */
@Configuration // 指定为配置类
@Profile("oracle") // 指定配置环境名称
public class OracleConfig implements DatabaseConfig {
    @Override
    public void connector() {
        System.out.println("项目使用Oracle数据库环境!");
    }
}

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

在这里插入图片描述

package net.hw.lesson05.config;

import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Profile;

/**
 * 功能:Sybase数据库配置类
 * 作者:华卫
 * 日期:2021年05月08日
 */
@Configuration // 指定为配置类
@Profile("sybase") // 指定配置环境名称
public class SybaseConfig implements DatabaseConfig {
    @Override
    public void connector() {
        System.out.println("项目使用Sybase数据库环境!");
    }
}

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

  • 在全局配置文件application.properties里配置使用环境
    在这里插入图片描述

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

  • 点开测试类ProfileDemo02ApplicationTests
    在这里插入图片描述
  • 注入数据配置实体
  • 调用数据库配置实体的方法
package net.hw.lesson05;

import net.hw.lesson05.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.connector();
    }

}

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

  • 运行测试方法contextLoads()
    在这里插入图片描述
    在这里插入图片描述

课堂练习

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

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

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

(一)创建Spring Boot Web项目RandomSetDemo

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

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

在这里插入图片描述

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

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

  • 点开测试类RandomSetDemoApplicationTests
    在这里插入图片描述

1、测试随机数my.number

  • 注入配置文件里的属性
  • 输出配置文件里的属性
package net.hw.lesson05;

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

@SpringBootTest
class RandomSetDemoApplicationTests {
    // 注入配置文件里的属性
    @Value("${my.number}")
    private String number;

    @Test
    void contextLoads() {
        // 输出配置文件里的属性
        System.out.println(number);
    }
}
  • 反复运行测试方法contextLoads(),查看结果
    在这里插入图片描述
  • 运行了三次,最后一次结果
    在这里插入图片描述
  • 大家可以看到,产生的是32位的十六进制数对应的字符串

2、测试随机整数my.integer

  • 注入配置文件里的属性
  • 输出配置文件里的属性

在这里插入图片描述

  • 反复运行测试方法contextLoads(),查看结果
    在这里插入图片描述
  • 运行了三次,最后一次结果
    在这里插入图片描述

课堂练习

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

在这里插入图片描述
在这里插入图片描述

2、测试随机UUID值my.uuid

在这里插入图片描述
在这里插入图片描述

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

在这里插入图片描述
在这里插入图片描述

4、测试1024至65535之间的随机整数my.number.range

在这里插入图片描述
在这里插入图片描述

(四)演示参数间的引用

  • 在appication.properties文件里,后定义的属性可引用前面定义的属性
  • 定义三个属性year、month和day
  • 定义属性user.name
  • 定义属性user.birthday,引用属性year、month和day
    在这里插入图片描述
  • 修改测试类RandomSetDemoApplicationTests
package net.hw.lesson05;

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

@SpringBootTest
class RandomSetDemoApplicationTests {
    // 注入配置文件里的属性
    @Value("${user.name}")
    private String name;
    @Value("${user.birthday}")
    private String birthday;

    @Test
    void contextLoads() {
        // 输出配置文件里的属性
        System.out.println(name + " : " + birthday);
    }
}
  • 运行测试方法,查看结果
    在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/588007.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Unity基础 音频组件以及音频播放

在游戏开发中&#xff0c;声音是一个重要的环节。Unity中的声音组件可以帮助开发者轻松地控制游戏中音频的播放、音量、循环等属性&#xff0c;从而实现更好的游戏体验。本文将详细介绍Unity声音组件的相关概念和技术&#xff0c;以及其在游戏、影视等领域的广泛应用和发展前景…

银行联行号-联行号api接口-联行号数据源

接口地址&#xff1a; https://登录后显示/api/180/348(支持:http/https) 数据源&#xff1a;https://www.wapi.cn/source/8.html 网站地址&#xff1a;https://www.wapi.cn 返回格式&#xff1a;json,xml 请求方式&#xff1a;GET,POST 请求说明&#xff1a; 银行联行号-联行…

数据集:T-Drive(北京出租车轨迹数据)

1 数据来源 T-Drive trajectory data sample - Microsoft Research 2 数据介绍 数据集包含了2008年2月2日至2月8日期间在北京市内的10,357辆出租车的GPS轨迹。总共包含约1500万个GPS点&#xff0c;轨迹总里程达到了900万公里。 图1显示了两个连续点之间的时间间隔和距离间隔…

Apache 配置和应用

目录 构建虚拟 Web 主机 Options指令解释 Options指令常用选项 AllowOverride指令解释&#xff1a; 地址限制策略&#xff1a; httpd服务支持的虚拟主机类型包括以下三种: 基于域名的虚拟主机 1&#xff0e;为虚拟主机提供域名解析 2.为虚拟主机准备网页文档 3.添加虚拟…

【服务器】springboot实现HTTP服务监听

文章目录 前言1. 本地环境搭建1.1 环境参数1.2 搭建springboot服务项目 2. 内网穿透2.1 安装配置cpolar内网穿透2.1.1 windows系统2.1.2 linux系统 2.2 创建隧道映射本地端口2.3 测试公网地址 3. 固定公网地址3.1 保留一个二级子域名3.2 配置二级子域名3.2 测试使用固定公网地址…

Mysql 异常,“Cause: com.mysql.cj.jdbc.exceptions.MySQLTimeoutException”

Cause: com.mysql.cj.jdbc.exceptions.MySQLTimeoutException: Statement cancelled due to timeout or client request 简言&#xff1a;这种异常从字面翻译过来&#xff1a;mysql 请求链接超时&#xff0c;具体超时是什么原因导致的&#xff0c;可以根据情况分析下。 异常详…

【黄啊码】PHP商城中的积分任务系统实现

大家好&#xff0c;我是黄啊码&#xff0c;前几天有位小伙伴问我&#xff0c;商城中的任务系统是怎么实现的&#xff1f; 积分作为一种营销手段&#xff0c;被广泛运用于线上/线下的产品中&#xff0c;以此来增加用户对于产品的粘性。比如天猫积分可以用来兑换商品&#xff0c…

uni-app通过vue.config.js在项目中配置跨域代理

其实这个 如果你用nginx去配肯定再好不过 不过 一般大家也都不想把开发环境弄那么复杂 最好还是在项目中配置 那么 我们选择项目跟目录右键 选择 使用命令行窗口打开所在目录 在新弹出的命令行中引入依赖 npm install http-proxy-middleware --save-dev然后我们的依赖就进来…

【通信接口】CAN总线协议

目录 一、什么是CAN 1、CAN 的概念 2、节点构成&#xff08;CAN 总线通信模型&#xff09; 3、差分信号&#xff08;电平特性&#xff09; 4、CAN 总线的特点 二、CAN 总线协议的通信过程 1、发送过程 2、接收过程 3、概括 三、CAN 通信帧的分类 一、什么是CAN 1、C…

易基因:全基因组ChIP-seq分析揭示细菌转录因子PhoB的基因内结合位点|mBio

大家好&#xff0c;这里是专注表观组学十余年&#xff0c;领跑多组学科研服务的易基因。 细菌编码许多转录因子&#xff08;transcription factor&#xff0c;TF&#xff09;&#xff0c;这些转录因子通过与启动子周围的DNA结合并调控RNA聚合酶&#xff08;RNAP&#xff09;全…

微服务架构打造的供应链系统、采购配送系统,支持SaaS模式

一、开源项目简介 haohan-scm 介绍 基于pig微服务架构打造 供应链系统&#xff0c;采购配送系统。为客户提供仓储管理、订单管理、打单、货源采购、分拣、配送等系统功能。 二、开源协议 使用AGPL-3.0开源协议 三、界面展示 系统截图 四、功能概述 基于pig微服务架构打…

电脑重装系统需要多长的时间

电脑重装系统是一个涉及多个步骤和因素的过程&#xff0c;所需的时间会因个体差异和系统配置而异。本文将解析电脑重装系统所需的时间&#xff0c;并提供一些因素和建议&#xff0c;帮助您对整个过程有一个准确的预期。 工具/原料&#xff1a; 系统版本&#xff1a;windows8系…

c语言的预处理和编译

预处理 文件包含 当预处理器发现#include指令时&#xff0c;会查看后面的文件名并把文件的内容包含到当前文件中 两种写法 尖括号&#xff1a;引用的是编译器的库路径里面的头文件。 双引号&#xff1a;引用的是程序目录中相对路径中的头文件&#xff0c;如果找不到再去上面…

【redis基础】事务|管道|发布订阅

大家好~这里是redis系列文章之《【redis基础】事务|管道|发布订阅》上一篇文章&#xff1a;redis持久化【RDBAOF】持久化双雄_努力努力再努力mlx的博客-CSDN博客 目录 事务 概念 作用 数据库事务vs redis事务 常用指令 情况1&#xff1a;正常执行 情况2&#xff1a;放弃…

微信小程序开发实践入门教程

随着微信小程序的火爆&#xff0c;越来越多的人开始关注微信小程序开发并加入开发大军中&#xff0c;而很多人对于如何开发微信小程序&#xff0c;并没有很好的思路和方法。因此&#xff0c;为了方便大家在学习、实践和应用的过程中能够少走弯路&#xff0c;本文将通过一篇关于…

IE11离线安装包ie离线升级ie11离线安装ie11补丁

首先下载ie11离线安装包与补丁文件&#xff1a; 下载地址&#xff08;我的资源里有&#xff09;&#xff1a; &#xff08;如不着急可私信直接要安装包补丁包&#xff0c;我若看到及时回复你&#xff09; 1、 下载补丁文件和IE11安装程序&#xff08;这里以32位系统为例&…

uni-app 金额格式化

普通过滤器(filter)在当前页面定义&#xff0c;复制红色代码即可 <template> <view> <text >{{balance|money}}</text> </view> </template> <script> export default{ data(){ return{ …

怎么让用户用好你的在线帮助文档协作工具?

在线帮助文档协作工具是现代企业中重要的工具&#xff0c;它可以帮助企业员工更好地协作&#xff0c;提高工作效率&#xff0c;减少沟通成本。然而&#xff0c;如何让用户用好在线帮助文档协作工具&#xff0c;满足其需求&#xff0c;本文将探讨以下几个方面&#xff1a; 一、…

LwIP 之七 详解 PBUF 结构、通信数据流、性能优化

数据包的复制在协议栈中是非常耗时的一个操作。LwIP 协议栈内部使用 pbuf 这种数据结构来对数据进行传递&#xff0c;灵活的 pbuf 结构体使得数据在不同网络层之间传递时可以减少内存的开销&#xff0c;避免频繁的内存复制&#xff0c;增加数据在不同层之间传递的速度。 简介 …

OJ练习第122题——交错字符串

交错字符串 力扣链接&#xff1a;97. 交错字符串 题目描述 给定三个字符串 s1、s2、s3&#xff0c;请你帮忙验证 s3 是否是由 s1 和 s2 交错 组成的。 两个字符串 s 和 t 交错 的定义与过程如下&#xff0c;其中每个字符串都会被分割成若干 非空 子字符串&#xff1a; s …