SpringBoot 配置⽂件

Spring Boot 提供了一种非常灵活的方式来配置应用程序,这主要是通过使用属性文件来实现的。最常用的配置文件是 application.propertiesapplication.yml,它们通常位于项目的 src/main/resources 目录中。下面,我将介绍如何使用这些配置文件来自定义 Spring Boot 应用程序的行为。\

一、设置配置文件

1. application.properties 和 application.yml

Spring Boot 支持两种类型的配置文件格式:.properties.yml。选择哪一种取决于个人或团队的偏好:

.properties 文件格式:

server.port=8080
spring.datasource.url=jdbc:mysql://localhost/test
spring.datasource.username=dbuser
spring.datasource.password=dbpass

.yml 文件格式: 

server:port: 8080
spring:datasource:url: jdbc:mysql://localhost/testusername: dbuserpassword: dbpass
2. 配置文件的优先级

Spring Boot 允许你在不同位置定义配置文件,并且这些配置文件有一定的优先级顺序。例如,位于 /config 子目录中的配置文件优先级高于位于类路径根目录(/resources/classes)中的配置文件。此外,环境变量和命令行参数可以覆盖这些文件中的属性。

二、Profile-specific 配置

Spring Boot 允许你为不同的环境定义不同的配置,这是通过使用 profile-specific 的配置文件来实现的。例如,你可以有以下文件:

  • application-dev.properties
  • application-test.properties
  • application-prod.properties
1.可以在 application.properties 中设置激活的配置文件:
spring.profiles.active=dev
2.在运行应用时通过命令行参数指定:
java -jar myapp.jar --spring.profiles.active=prod
3.Maven Profiles 的使用

可以在 pom.xml 文件中定义多个 profiles,每个 profile 都可以指定不同的配置参数,包括资源文件的过滤和替换,以及其他构建时的特定设置。这里是一个简单的例子,展示如何使用 Maven Profiles 来管理不同环境的配置:

<project>...<profiles><profile><id>dev</id><properties><activated.profile>dev</activated.profile></properties><build><resources><resource><directory>src/main/resources</directory><filtering>true</filtering><includes><include>**/application-${activated.profile}.properties</include></includes></resource></resources></build></profile><profile><id>prod</id><properties><activated.profile>prod</activated.profile></properties><build><resources><resource><directory>src/main/resources</directory><filtering>true</filtering><includes><include>**/application-${activated.profile}.properties</include></includes></resource></resources></build></profile></profiles>...
</project>

在这个例子中,我们定义了两个 profiles:devprod。每个 profile 都设置了一个属性 activated.profile,这个属性被用来在资源过滤过程中选择合适的配置文件。

激活 Maven Profiles

你可以在构建时通过命令行参数来激活特定的 Maven profile,从而实现不同环境的配置加载:

mvn package -P dev

三、获取配置文件

Spring Boot 项目中获取配置文件中设置的值是一个常见的需求。Spring Boot 提供了多种方法来读取和使用配置文件(如 application.propertiesapplication.yml)中定义的属性值。这里有几种常用的方法:

1. 使用 @Value 注解

你可以使用 @Value 注解来自动注入配置文件中的属性到 Spring Bean 的字段中。这种方法简单直接,适用于获取单个值。

import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;@Component
public class MyComponent {@Value("${some.property}")private String propertyValue;// 使用 propertyValue
}

在这个例子中,some.property 是在 application.properties 中定义的一个属性,其值将被注入到 propertyValue 字段中。

2. 使用 ConfigurationProperties 注解

当你需要读取一组相关的配置或者整个配置文件时,可以使用 @ConfigurationProperties 注解。这种方法允许将配置文件中的属性绑定到一个类的字段上。

首先,你需要定义一个配置属性类:

import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;@Component
@ConfigurationProperties(prefix = "app")
public class AppConfig {private String name;private int timeout;// 省略 getter 和 setter 方法
}

然后在 application.properties 文件中定义相应的属性:

app.name=MyApp
app.timeout=5000
3.使用 @Configuration@Bean

另一种高级用法是通过配置类和 @Bean 方法直接从环境中获取配置:

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.beans.factory.annotation.Value;@Configuration
public class AppConfig {@Beanpublic MyBean myBean(@Value("${some.property}") String propertyValue) {return new MyBean(propertyValue);}
}

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

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

相关文章

【LangChain系列】实战案例5:用LangChain实现灵活的Agents+RAG,该查时查,不该查时就别查

目前为止&#xff0c;我们实现的RAG练习中&#xff0c;答案都是全部来源于检索到的文本内容。而检索过程可能在某些情况下是不需要的。 如何优化这个过程&#xff0c;让我们的RAG程序在必要时才去检索&#xff0c;不必要时&#xff0c;直接使用大模型原有数据来回答呢&#xf…

M2型TAM靶向肽CRV; Ahx-CRVLRSGSC ;

【M2型TAM靶向肽CRV 简介】 M2型TAM靶向肽CRV是一种用于靶向肿瘤相关巨噬细胞&#xff08;TAMs&#xff09;中M2型亚群的多肽。这种多肽序列为CRVLRSGSC&#xff0c;包含一对二硫键&#xff0c;其三字母代码为Cys-Arg-Val-Leu-Arg-Ser-Gly-Ser-Cys&#xff08;Cys-Cys&#xff…

什么是json?

JSON简介:JSON的全称为JavaScript Object Nation(JavaScript 对象表示语法)&#xff0c;基于 ECMAScript&#xff0c;存放的是的类似于键值对&#xff0c;本质上来说是javascript的数据类型&#xff0c;是一种轻量级的数据交互格式&#xff0c;简单来说呢&#xff0c;json就是一…

万博智云CEO王嘉在华为全联接大会:以创新云应用场景,把握增长机遇

一、大会背景 2024年9月19-21日&#xff0c;第九届华为全联接大会将在上海世博展览馆和上海世博中心举办。作为华为的旗舰盛会&#xff0c;本次大会以“共赢行业智能化”为主题邀请了众多思想领袖、商业精英、技术专家、合作伙伴、开发者等业界同仁&#xff0c;从战略、产业、…

NS2159 1A 线性锂离子电池充电管理IC

1 特性 ● 输入电压范围 4.5V-26V ● 输入过压保护电压 6.0V ● 用于单节锂离子电池线性工作模式充电 ● 支持 0V 电池电压充电 ● 涓流/恒流/恒压三段式充电 ● 内部预设 4.2V 充电浮充电压 ● 1A 可编程充电电流 ● C/10 充电终止功能 ● 内置自动复充功能 ● 内置过温保护功…

51单片机-DA(数字转模拟)(呼吸灯)

作者&#xff1a;Whappy 个人理解&#xff1a;将电压或电流信号进行等分或不等分&#xff08;高电平的电压范围和低电平的范围&#xff0c;如0-5v&#xff0c;0-1.8位低电平&#xff0c;3.8-5v为高电平&#xff09;&#xff0c;同样也是通过采样&#xff0c;量化等操作将不连续…

智能创造的幕后推手:AIGC浪潮下看AI训练师如何塑造智能未来

文章目录 一、AIGC时代的算法与模型训练概览二、算法与模型训练的关键环节三、AI训练师的角色与职责四、AI训练师的专业技能与素养五、AIGC算法与模型训练的未来展望《AI训练师手册&#xff1a;算法与模型训练从入门到精通》亮点内容简介作者简介谷建阳 目录 《医学统计学从入门…

2024图纸加密软件最佳选择!10款超好用的图纸加密软件推荐!

随着企业对数据安全的重视不断提升&#xff0c;尤其是在涉及重要设计图纸等机密文件的管理上&#xff0c;选择一款高效且安全的图纸加密软件显得尤为重要。2024年&#xff0c;我们精选了10款超好用的图纸加密软件&#xff0c;帮助企业保护知识产权与机密数据的安全。 1.安秉图纸…

多语言文本 AI 情感分析 API 数据接口

多语言文本 AI 情感分析 API 数据接口 AI / 文本处理 AI 模型快速分析文本情感倾向 多语言文本 / 情感分析。 1. 产品功能 支持多语言文本情感分析&#xff1b;基于特定 AI 模型&#xff0c;快速识别文本情感倾向&#xff1b;适用于评论分析、舆情监控等场景&#xff1b;全接…

2024/9/23 leetcode 148题 排序链表

目录 148.排序链表 题目描述 题目链接 解题思路与代码 148.排序链表 题目描述 给你链表的头结点 head &#xff0c;请将其按 升序 排列并返回 排序后的链表 。 示例 1&#xff1a; 输入&#xff1a;head [4,2,1,3] 输出&#xff1a;[1,2,3,4]示例 2&#xff1a; 输入&am…

【Python】入门学习1:开发前的准备

准备工作&#xff1a; 1、电脑系统&#xff1a;windows 64位&#xff1b; 2、python学习所需工具&#xff1a;“解释器、编译器”&#xff1b; &#xff08;1&#xff09;python 解释器&#xff1a;解释代码的&#xff0c;把 python 计算机语言翻译给计算机认识&#xff1b;…

双通道隔离驱动之选,SLMi823x系列SLMi8235BDCG-DG可编程死区满足您需求

SLMi823x系列SLMi8235BDCG-DG双通道死区可编程的隔离驱动器。SLMi823x系列SLMi8235BDCG-DG配置为双输入&#xff0c;双输出驱动器。另外&#xff0c;SLMi823x系列SLMi8235BDCG-DG峰值输出电流为 4.0A。 所有输出驱动器的 VDDA/B 电源电压最高到40V。3V 至 18V 的 VDDI 宽范围输…

git用ssh来拉去代码

参考资料 5分钟 git配置ssh_哔哩哔哩_bilibili Git怎么使用SSH从GitLab上拉取代码_gitlab ssh-CSDN博客 gitlab怎么配置通过ssh来拉取代码_gitlab ssh 拉代码-CSDN博客 执行的命令:(需要在你本地.ssh文件夹下执行) ssh-keygen -t rsa -b 4096 -C "你的邮箱" ss…

PHPstorm 安装汉化包失败解决方法

错误信息&#xff1a; Plugin "chinese (Simplified) Language Pack/中文语言包" was not installed: invalid filename returned by a server 原因 &#xff1a;官方的包和软件的版本不对应&#xff0c;下载对应的汉化包就行了 官网汉化包&#xff1a; Chinese (…

Linux C——网络编程

本案例运行环境&#xff1a;Ubuntu 12.04.1 LTS 1、基本概念 网络的七层模型&#xff1a; 物理层 数据链路层 网络层 传输层 会话层 表示层 应用层 其中&#xff1a;1、2、3层主要面向通过网络端到端的数据流&#xff0c; 4、5、6、7层定义了程序的功能 …

抱歉占用公共资源,大家别猜啦,我们在一起了@Yaker

家人们上午好呀 这里是超绝脱单牛一枚 没错&#xff0c;我和Yaker有一个孩子&#xff08;bushi 今天我们的孩子YakLang来给大家介绍介绍&#xff0c;ta对块作用域的处理方式 在编程中&#xff0c;作用域&#xff08;Scope&#xff09;指的是变量、函数和对象的可访问性和生命…

Java反序列化CC1-TransformedMap链学习

学习参考&#xff1a;Java反序列化CC1链TransformedMap 核心是要学会基本EXP编写&#xff0c;还有怎么找传递链。 链子尾部 这里有一个能反射调用任意类&#xff0c;任意方法的&#xff1a; 以这个漏洞点写EXP&#xff0c;由于这个是public的InvokerTransformer&#xff0c;所…

如何基于scrcpy改造实现大厂一键连招/触摸宏功能(带java源码)-千里马安卓framework实战

背景&#xff1a; 前面公众号文章已经分享过如何实现这种大厂里面一键连招&#xff0c;触摸宏的功能&#xff0c;原理本身是对dev/input下面的节点进行读取保存文件&#xff0c;然后在读取文件进行写入dev/input下面的节点&#xff0c;从而实现了触摸事件的读取和写入&#xf…

初始main方法,标识符和关键字

1. 初识Java的main方法 1.1 main方法示例 public class HelloWorld{public static void main(String[] args){System.out.println("Hello,world");} }图解&#xff1a; 通过上述代码&#xff0c;我们可以看到一个完整的Java程序的结构&#xff0c;Java程序的结构…

C. Lazy Narek (Codeforces Round 972 (Div. 2))

C. Lazy Narek 思路: 动态规划 dp dp[i] 表示 目前寻找的字符下标为i 时的最大分数&#xff08;<i<4&#xff09; 从前往后遍历字符串&#xff0c;每个字符串找5次&#xff0c;找完后把dp取max 注意找的过程中不能修改原dp数组&#xff0c;因为这5次查找是并行的&#x…