Spring Boot配置 application.yml,根据application.yml选择启动配置

news2025/1/11 21:58:20

在Spring Boot 中可以选择applicant.properties 作为配置文件,也可以通过在application.yml中进行配置,让Spring Boot根据你的选择进行加载启动配置文件。

这种配置方式,我们通常在实际开发中经常使用,主要为了发布版本和以及开发环境,本地环境,测试环境等不同环境使用不同的配置文件,这样就减少了我们经常去配置application.yml的相关具体配置,因为不同的配置文件里边的ip地址或者数据库的链接以及端口不同,干过开发的都知道,我们一般会将数据库的访问地址,账号,密码,Redis的访问地址等均放到application.yml文件中。

开始,我们在Spring Boot中创建一个启动类文件

@SpringBootApplication
public class Chapter12Application {

    public static void main(String[] args) {
        SpringApplication.run(Chapter12Application.class, args);
    }

    @RestController
    static class HelloController {

		//指定配置文件读取name并获得配置文件的值
        @Value("${name:}")
        private String name;

		//浏览器根据地址访问得到相关name
        @RequestMapping("/")
        public String index() {
            return name;
        }
    }
}

创建一个application.yml文件存放到src/resources,目录下:

# 默认激活dev配置,选择启动配置文件,实际上均采用active读取
spring:
  profiles:
    active: "test"

---
# 指定的配置文件
spring:
  config:
    activate:
      on-profile: "dev"

# 读取的name文件
name: dev.Miaow.Y.Hu.com
#启动端口号配置
server:
  port: 7745
---

spring:
  config:
    activate:
      on-profile: "test"

name: test.Miaow.Y.Hu.com
server:
  port: 7745
---

spring:
  config:
    activate:
      on-profile: "prod"
server:
  port: 7745

name: prod.Miaow.Y.Hu.com

Spring Boot 2.4 以后的配置

好,有了上边对application.yml的相关基础,接下来我们在一个application.yml进行相关配置,然后根据相关配置启动我们需要的配置文件,然后得到我们想要的name.

依旧是Spring Boot 的启动文件

@SpringBootApplication
public class Chapter13Application {

    public static void main(String[] args) {
        SpringApplication.run(Chapter13Application.class, args);
    }

    @Slf4j
    @RestController
    static class HelloController {

        @Value("${db:}")
        private String db;

        @Value("${mq:}")
        private String mq;

        @RequestMapping("/")
        public String index() {
            log.info("db:" + db);
            log.info("mq:" + mq);
            return db + "===" + mq;
        }

    }

}

依旧是如此,我们可以在pom.xml先配置我们所需要的依赖:

<dependencies>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
		</dependency>

		<dependency>
			<groupId>org.projectlombok</groupId>
			<artifactId>lombok</artifactId>
			<scope>provided</scope>
		</dependency>

		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-test</artifactId>
			<scope>test</scope>
		</dependency>
	</dependencies>

	<build>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
			</plugin>
		</plugins>
	</build>

接下来我们还是将重点放到我们的application.yml配置文件上:

# 2.4之前的配置
#spring:
#  profiles:
#    active: "dev"
#
#---
#spring.profiles: "dev"
#spring.profiles.include: "dev-db,dev-mq"
#
#---
#spring.profiles: "dev-db"
#
#db: dev-db.Miaow.Y.Hu.com
#
#---
#spring.profiles: "dev-mq"
#
#mq: dev-mq.Miaow.Y.Hu.com
#
#---

#2.4之后的配置
# 默认激活dev配置
spring:
  profiles:
  # 更改指定的启动配置文件
    active: "dev" 
    group:
    # 分组,只要你确定定义的别名满足条件,那么就适配
      "dev": "dev-db,dev-mq"
      "prod": "prod-db,prod-mq"

---
spring:
  config:
    activate:
      on-profile: "dev-db"

db: dev-db.Miaow.Y.Hu.com

---
spring:
  config:
    activate:
      on-profile: "dev-mq"

mq: dev-mq.Miaow.Y.Hu.com

---
spring:
  config:
    activate:
      on-profile: "prod-db"

db: prod-db.Miaow.Y.Hu.com

---
spring:
  config:
    activate:
      on-profile: "prod-mq"

mq: prod-mq.Miaow.Y.Hu.com

由于我并未配置具体的端口号,故而系统将采用默认的端口号8080启动,其中我们通过端口号访问得到,因为我们默认采用dev进行启动,故而我们在浏览器上得到的就是dev开头的数据。

在这里插入图片描述
这是在浏览器打印的结果,在控制台我们也可以看到相关打印的结果:
在这里插入图片描述
同理,我们也可以利用application.yml的特性,来完成我们所需要的功能。
例如:

@RestController
public class HelloController {
    @Value("${com.Miaow.Y.Hu.from}")
    public String from;

    @RequestMapping("/hello")
    public String index() {
        return "Hello World";
    }

    @RequestMapping("/demo")
    public String didi(){
        System.out.println(from);
        return from;
    }
}

application.properties

com.Miaow.Y.Hu.from=miaow

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

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

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

相关文章

ATFX汇市:美元指数跌破关键支撑,黄金触及2000关口后回落

ATFX汇市&#xff1a;昨日&#xff0c;在没有重磅数据公布的情况下&#xff0c;美元指数大跌0.52%&#xff0c;最低触及105.51&#xff0c;令市场人士感到意外。美元指数与美债价格呈反向波动关系&#xff1a;美联储加息&#xff0c;美债价格下跌&#xff08;收益率提高&#x…

清华训练营悟道篇之操作系统的调用接口

文章目录 API与ABI系统调用接口的功能 API与ABI API (Application Programming Interface)定义了源码级&#xff08;如 C 语言&#xff09;函数的参数&#xff0c;参数的类型&#xff0c;函数的返回值等。API 是用来约束编译器 (Compiler) 的&#xff0c;给编译器的一些指令&a…

女孩子就是要打扮漂亮,让童年不留遗憾

好的衣服当然要分享给好看的人啦&#xff01; 百搭圆领卫衣&#xff0c;经典版型不挑人穿 复合奥利绒面料&#xff0c;罗纹收口设计 时尚百搭怎么穿都好看 单穿内搭都可以 卡通鹅真的好可爱 宝贝穿上去真的元气满满哦

Verilog功能模块——读写位宽不同的同步FIFO

FIFO系列文章目录&#xff1a; Verilog功能模块——异步FIFO-CSDN博客 Verilog功能模块——同步FIFO-CSDN博客 Verilog功能模块——读写位宽不同的异步FIFO-CSDN博客 Verilog功能模块——读写位宽不同的同步FIFO-CSDN博客 Verilog功能模块——标准FIFO转FWFT FIFO-CSDN博客…

Linux ——目录结构

这些目录在 Linux 系统中的解释如下&#xff1a; 目录用途/bin存放常用命令的二进制文件。/boot包含启动 Linux 时必要的核心文件。/dev代表设备&#xff08;Device&#xff09;&#xff0c;其中包含系统的外部设备。/etc主要存放系统的配置文件。/home用户的主目录&#xff0…

深入了解JavaScript中的数据类型

目录 基本数据类型 引用数据类型 类型检查 转换和比较 结论 JavaScript是一门动态类型语言&#xff0c;它支持多种数据类型。在本文中&#xff0c;我们将深入探讨JavaScript中的各种数据类型以及它们的特点。 基本数据类型 JavaScript中有六种基本数据类型&#xff0c;它…

信息化,数字化,智能化是三种不同的概念吗?

什么是信息化&#xff1f;什么是数字化&#xff1f;什么是智能化&#xff1f;这三者之间有什么关系&#xff0c;又有什么区别&#xff1f;他们又分别是如何助力企业转型的&#xff1f; 一、什么是数字化 先上概念—— 数字化&#xff1a;表示利用数字形式的信息提高工作效率…

【LeetCode刷题(数据结构与算法)】:三数之和(数组+指针+排序)

给你一个整数数组 nums &#xff0c;判断是否存在三元组 [nums[i], nums[j], nums[k]] 满足 i ! j、i ! k 且 j ! k &#xff0c;同时还满足 nums[i] nums[j] nums[k] 0 请你返回所有和为 0 且不重复的三元组 注意&#xff1a;答案中不可以包含重复的三元组 示例 1&#xff…

51单片机的hello world之点灯

文章目录 前言一、基础定义和点灯二、延时函数三、独立按键三、中断的配置和使用外部中断法捕获中断 总结 前言 hello 大家好这里是夏目学长的51单片机课堂&#xff0c;本篇博客是夏目学长观看B站up主学电超人的视频所写的一篇51单片机入门博客之51单片机点灯以及 独立按键 中…

Fiddler 的使用(详细教程)

文章目录 前言一、简介二、下载安装三、界面简介1. 菜单栏2. 工具栏3. 会话面板4. 辅助标签工具5. 命令行6. 状态栏 四、常用功能1. 抓取指定 IP 地址的包2. 抓取 HTTPS 协议的包3. 手机 APP 抓包4. 发送序列化请求5. 发送上传文件请求 五、常见问题 前言 Fiddler 是最常用的 …

成都优优聚美团代运营:助力商家腾飞的隐形翅膀

在当前数字化时代&#xff0c;电子商务的飞速发展使得线上运营成为越来越多商家的必然选择。在这个过程中&#xff0c;美团代运营作为一种专业的外包服务模式&#xff0c;正逐渐发挥出其巨大的作用。 一、美团代运营的定义与作用 美团代运营&#xff0c;顾名思义&#xff0c;是…

TikTok网红营销:挖掘潜在客户的高效策略

在当今数字时代&#xff0c;社交媒体已经成为了企业吸引潜在客户的重要渠道之一。TikTok作为全球范围内最热门的短视频分享平台之一&#xff0c;为企业提供了一个独特的机会&#xff0c;可以通过网红营销来挖掘潜在客户。本文Nox聚星将和大家探讨如何在TikTok上运用网红营销策略…

大数据时代,网络安全人员的钱途在哪里?

未来10年20年以后&#xff0c;这世界最珍贵的资源、最稀缺的资源&#xff0c;不会是石油&#xff0c;一定是数据。企业要有最快获取数据的能力、处理数据的能力、分享数据的能力、产生数据的能力。在刚过去不久的2020中国国际智能产业博览会上&#xff0c;马云在8分钟演讲里30次…

提取机器人专注视频号视频下载!视频号视频下载使用教程

知道吗&#xff1f;原来我们可以轻松地将视频下载到手机上&#xff0c;无需再繁琐操作了&#xff01;那么&#xff0c;让我教你一招吧&#xff01; 首先&#xff0c;你需要一个神器——名字叫做「提取机器人」。这个小众冷门的应用真的是保姆级存在&#xff0c;让你的下载经验变…

CI/CD:GitLab-CI 自动化集成/部署 JAVA微服务的应用合集

CI/CD&#xff1a;GitLab-CI 自动化集成/部署 JAVA微服务的应用合集 CI/CD&#xff1a;GitLab-CI 自动化集成/部署 JAVA微服务的应用合集安装DockerGitLabGitLab-Runner阿里云容器仓库 GitLab-CIJava微服务的GitLab-CI应用 CI/CD&#xff1a;GitLab-CI 自动化集成/部署 JAVA微服…

Zabbix自定义监控项监控进程状态

agent服务端配置 自定义监控项脚本 # 文件路径: C:\zabbix_agent2-6.0.4-windows-amd64-static\conf\a.bat echo off setlocalset "processNameo2Popper.exe"tasklist /FI "IMAGENAME eq %processName%" 2>NUL | find /I /N "%processName%"…

微信小程序抓包及测试

目录 环境准备 小程序反编译 一不小心getshell 本来只想写个抓包反编译过程&#xff0c;没想到大肠包小肠有意外收获 网上大多数的小程序测试抓包都是用的安卓模拟器&#xff0c;这里使用的是BurpSuiteProxifer微信客户端的抓包方式 环境准备 Burp2023.9.2 Proxifier4.5…

darknet框架 训练分类模型及测试图片

darknet 框架的Yolo模型大概已经没什么公司使用了&#xff0c;对于老项目的维护可能新手需要了解下&#xff0c;然而 darknet架构并不十分友好&#xff0c;新手入手门槛比较高&#xff0c;特别是做分类任务时&#xff0c;简直了&#xff01;&#xff01;&#xff01; 博主也是走…

交传翻译在不同场合的差异,你了解多少?

交替传译就是指译员在讲话人发言后&#xff0c;将目标语言准确翻译出来的口译方式。两会期间的新闻发布会就是采用交传。与同传相比&#xff0c;交传更具挑战性&#xff0c;因为译员需要承受与听众直接交流的压力&#xff0c;同时也需要充分理解源语言的内容并进行适当的结构调…

日志报错 fork:Cannot allocate memory

现象描述 日志中出现报错信息 “fork&#xff1a;Cannot allocate memory”。如下图所示&#xff1a; 可能原因 可能是进程数超限导致。系统内部的总进程数达到了 pid_max 时&#xff0c;再创建新进程时会报 “fork&#xff1a;Cannot allocate memory” 错。 解决思路 1. …