spring boot 基础案例【2】对多环境配置的支持更改

教程1
案例教程
案例仓库
在线编程

教程2
基础教程
教程仓库
在线编程

本案例所在的仓库
本案例所在的文档


进入正文

1.文件目录

在这里插入图片描述

1. Chapter12Application.java

地址:/chapter1-2/src/main/java/com/didispace/chapter12/Chapter12Application.java

package com.didispace.chapter12;import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;@SpringBootApplication
public class Chapter12Application {public static void main(String[] args) {SpringApplication.run(Chapter12Application.class, args);}@RestControllerstatic class HelloController {@Value("${name:}")private String name;@RequestMapping("/")public String index() {return name;}}}

这段代码是一个使用 Spring Boot 框架创建的基本 Java Web 应用程序,具有一个简单的 REST 控制器。以下是代码中各部分的详细解释:

1. Package 声明

package com.didispace.chapter12;

这行代码声明了代码所在的包(package),Java 使用包来组织相关的类。com.didispace.chapter12是包的名称,通常采用公司域名的逆序作为包名,以确保唯一性。

2. Import 语句

import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

这些import语句导入了代码中将要使用的类和注解。这包括:

  • SpringApplication:用于启动 Spring 应用。
  • SpringBootApplication:标记主类,组合了多个注解的功能,如自动配置 (@EnableAutoConfiguration)。
  • Value:用于注入属性值。
  • RequestMappingRestController:用于创建 RESTful Web服务。

3. 主类和启动方法

@SpringBootApplication
public class Chapter12Application {public static void main(String[] args) {SpringApplication.run(Chapter12Application.class, args);}
}
  • @SpringBootApplication:标记这个类是 Spring Boot 应用的入口。
  • main方法:程序入口,SpringApplication.run()方法会启动应用。

4. REST Controller

@RestController
static class HelloController {@Value("${name:}")private String name;@RequestMapping("/")public String index() {return name;}
}
  • @RestController:标记这个类是一个控制器,其中所有方法返回的数据直接写入 HTTP 响应体,这是 RESTful Web服务的典型方式。
  • @Value("${name:}"):这是一个 Spring 表达式,用于注入名为name的环境变量值到变量name中。如果未设置,则默认为空字符串。
  • @RequestMapping("/"):指定这个方法响应的 URL 路径,这里是根路径。
  • index()方法:当访问根路径 ("/") 时调用,返回配置的name值。

这个简单的应用能够通过环境配置输出不同的字符串,主要用于展示 Spring Boot 应用的基本结构和简单的环境变量使用。这种模式在微服务架构中非常有用,可以通过外部配置灵活控制应用行为。

2.application.yaml

地址:/chapter1-2/src/main/resources/application.yaml

# 默认激活dev配置
spring:profiles:active: "dev"---spring:config:activate:on-profile: "dev"name: dev.didispace.com---spring:config:activate:on-profile: "test"name: test.didispace.com---spring:config:activate:on-profile: "prod"name: prod.didispace.com

这段代码是用来配置Spring Boot应用程序中不同环境的激活和属性配置的,主要用YAML格式进行配置管理。这里涉及到的是Spring的多环境配置。具体内容和作用如下:

  1. 默认激活开发环境配置(dev)

    spring:profiles:active: "dev"
    

    这部分设置了Spring Boot的活动(active)配置文件为dev。这意味着如果没有特别指定其他配置文件,应用将默认使用开发环境(dev)下的配置。

  2. 具体环境配置区分
    下面的配置通过spring.config.activate.on-profile指定了基于不同环境的特定配置。这允许应用在不同的运行环境下加载不同的配置属性。

    • 开发环境(dev)配置

      ---
      spring:config:activate:on-profile: "dev"
      name: dev.didispace.com
      

      当激活的配置文件为dev时,会使用name: dev.didispace.com作为配置属性。

    • 测试环境(test)配置

      ---
      spring:config:activate:on-profile: "test"
      name: test.didispace.com
      

      当激活的配置文件为test时,会使用name: test.didispace.com作为配置属性。

    • 生产环境(prod)配置

      ---
      spring:config:activate:on-profile: "prod"
      name: prod.didispace.com
      

      当激活的配置文件为prod时,会使用name: prod.didispace.com作为配置属性。

这种配置方式使得开发者可以在一个配置文件中维护多个环境的配置,并通过激活不同的配置文件来切换环境,非常适合在不同阶段(开发、测试、生产)需要不同配置的场景。每个环境具体的配置如域名、数据库参数等可以根据实际需要分别设置。

3.效果

在这里插入图片描述

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

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

相关文章

康谋分享 | aiSim5激光雷达LiDAR模型验证方法(二)

aiSim中的LiDAR是一种基于光线追踪的传感器,能够模拟真实LiDAR发射的激光束,将会生成LAS v1.4标准格式的3D点云,包含了方位角、俯仰角和距离等。 aiSim能够模拟LiDAR单态(Monostatic)和同轴(Coaxial&#…

PC端微信软件如何多开【详细教程】

现在工作中,很多小伙伴会用到两个微信。如何在PC端同时登录多个微信呢?赶快跟着下面的教程学起来吧 1、创建一个txt文本文件 2、输入以下代码并保存 echo offstart "" "复制粘贴微信的目标地址" 需要开几个微信就复制几行exit示例…

UTONMOS:用区块链技术拓展商业边界在哪里?

引言 大约从 2021 年Web 3 这个新概念开始受到风险基金和科技圈的普遍关注。但如果你对过去几年区块链的发展历史足够了解,就应该已经意识到现在的 Web 3 并不是什么新技术,甚至不是旧技术的进步,它只是一个基于区块链技术的宏大构想。 我是…

Vue3+Vant开发:个人信息管理

🙈作者简介:练习时长两年半的Java up主 🙉个人主页:程序员老茶 🙊 ps:点赞👍是免费的,却可以让写博客的作者开心好久好久😎 📚系列专栏:Java全栈,计算机系列(火速更新中) 💭 格言:种一棵树最好的时间是十年前,其次是现在 🏡动动小手,点个关注不迷路,…

一个联合均值与方差模型的R包——dglm

目录 一、引言二、包的安装与载入三、模拟例子3.1 数据生成3.2 数据查看3.3 模型估计参数 一、引言 在 R 语言中,dglm 包是用于拟合双参数广义线性模型(Double Generalized Linear Models,简称 DGLMs)的一个工具。这类模型允许同…

C语言实现双人贪吃蛇项目(基于控制台界面)

一.贪吃蛇 贪吃蛇是一款简单而富有乐趣的游戏,它的规则易于理解,但挑战性也很高。它已经成为经典的游戏之一,并且在不同的平台上一直受到人们的喜爱和回忆。 二.贪吃蛇的功能 游戏控制:玩家可以使用键盘输入设备来控制蛇的移动方…

139GB,台北倾斜摄影OSGB数据V0.1版

本月初发布了谷歌倾斜摄影数据OSGB转换工具V0.2版(更新!谷歌倾斜摄影转换生成OSGB瓦片V0.2版),并免费分享了基于V0.2版转换工具生产的澳门地区OSGB数据(首发!澳门地区OSGB数据V0.2版免费分享),V0.2版本在生产速度、显示效率和OSGB数据轻量化方面进行了优…

NVIDIA Jetson jtop查看资源信息

sudo -H pip install -U jetson-stats 安装好之后可能需要reboot 执行jtop: 时间久了可能会退出,可参考如下再次启动。 nvidiategra-ubuntu:~$ jtop The jtop.service is not active. Please run: sudo systemctl restart jtop.service nvidiategra-ub…

修改docker镜像版本,容器大小缩小10%!

shigen坚持更新文章的博客写手,擅长Java、python、vue、shell等编程语言和各种应用程序、脚本的开发。记录成长,分享认知,留住感动。 个人IP:shigen 是的,你看的没错:修改docker镜像的版本,我的…

最新知识付费小程序源码独立版 支持多终端合一+源码开源可二开+含完整代码包和安装教程

在当今信息爆炸的时代,知识付费逐渐成为了一种新型的商业模式。为了满足广大开发者和运营者的需求,分享一个最新版的知识付费小程序源码独立版。该版本不仅支持多终端合一,还具备源码开源可二开的特性,同时提供了完整的代码包和安…

【性能测试】ChaosTesting(混沌测试)ChaosBlade(混沌实验工具)(六)-servelt

7. servelt接口规范 7.0 创建servelt blade create servlet 7.0.1 介绍 Servlet 是 Java 的 web 的接口规范,Java web 服务器都遵循此规范实现。本场景主要模拟 Java Web 请求延迟、异常场景。 [blade create servlet delay](blade create servlet delay.md) 请…

网页自动跳转到其他页面,点击浏览器返回箭头,回不到原来页面的问题

背景&#xff1a;今天产品提个需求&#xff0c;需要从index页面自动触发跳转到下一页面的事件&#xff0c;从而不做任何操作&#xff0c;直接跳转到test页面。 代码是这样的&#xff1a; index.vue: <template><div style"width:500px;height:600px;background-…

WIFISKY 7层流控路由器 confirm.php RCE漏洞复现

0x01 产品简介 WIFISKY-7层流控路由器是一款可用于家庭或办公环境的无线路由器,具备流控功能以优化网络流量和提供更稳定的网络连接。该路由器采用了7层流控技术,能够依据网络数据包的内容进行智能管理,从而实现对网络流量的精细化控制和优化。这种技术可以提升网络的整体性…

Science Robotics 美国斯坦福大学研制了外行星洞穴探测机器人

月球和火星上的悬崖、洞穴和熔岩管已被确定为具有地质和天体生物学研究理想地点。由于其隔绝特性&#xff0c;这些洞穴提供了相对稳定的条件&#xff0c;可以促进矿物质沉淀和微生物生长。在火星上&#xff0c;这些古老的地下环境与火星表面可能适合居住时几乎没有变化&#xf…

孙中亮:北斗三十周年,看北斗芯片高质量发展历程和方向

1994年1月10日&#xff0c;北斗一号建设正式启动&#xff0c;党中央决策建设独立自主的北斗卫星导航系统。2020年7月31日&#xff0c;北斗三号全球卫星导航系统正式开通&#xff0c;标志着北斗系统进入全球化发展新阶段。随着2024年的到来&#xff0c;北斗系统建设已走过栉风沐…

上位机图像处理和嵌入式模块部署(树莓派4b与视觉slam十四讲)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 实际使用中&#xff0c;树莓派4b是非常好的一个基础平台。本身板子价格也不是很贵&#xff0c;建议大家多多使用。之前关于vslam&#xff0c;也就是…

ChatGPT实战100例 - (18) 用事件风暴玩转DDD

文章目录 ChatGPT实战100例 - (18) 用事件风暴玩转DDD一、标准流程二、定义目标和范围三、准备工具和环境四、列举业务事件五、 组织和排序事件六、确定聚合并引入命令七、明确界限上下文八、识别领域事件和领域服务九、验证和修正模型十、生成并验证软件设计十一、总结 ChatGP…

力扣HOT100 - 108. 将有序数组转换为二叉搜索树

解题思路&#xff1a; 二叉搜索树一般使用中序遍历 class Solution {public TreeNode sortedArrayToBST(int[] nums) {return helper(nums,0,nums.length-1);}public TreeNode helper(int[] nums,int left,int right){if(left>right) return null;//确定根节点//总是选择中…

2024年阿里云域名注册活动,com域名1元起,cn域名33元起

随着互联网的飞速发展&#xff0c;一个好的域名已经成为了企业或个人在线身份的重要标志。注册域名是很多用户开启互联网业务的第一步&#xff0c;2024年很多注册商现在com域名注册都快逼近80元了。作为国内最大的域名注册商与云服务商&#xff0c;近日&#xff0c;阿里云推出了…

提升你的C编程技能:使用cURL下载Kwai视频

概述 本文将介绍如何利用C语言以及cURL库来实现Kwai视频的下载。cURL作为一个功能强大的网络传输工具&#xff0c;能够在C语言环境下轻松地实现数据的传输。我们还将探讨如何运用代理IP技术&#xff0c;提升爬虫的匿名性和效率&#xff0c;以适应Kwai视频平台的发展趋势。 正…