当前位置: 首页 > news >正文

Spring Boot中获取application.yml中属性的几种方式

在Spring Boot应用程序中,可以通过多种方式从application.yml文件中获取配置属性。以下是几种常见的方法:

1. 使用@Value注解

你可以使用@Value注解将application.yml中的属性注入到Spring管理的bean中。

application.yml

app:name: MySpringBootAppversion: 1.0.0

Java类

import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;@Component
public class AppConfig {@Value("${app.name}")private String appName;@Value("${app.version}")private String appVersion;// Getter and Setter methodspublic String getAppName() {return appName;}public void setAppName(String appName) {this.appName = appName;}public String getAppVersion() {return appVersion;}public void setAppVersion(String appVersion) {this.appVersion = appVersion;}
}

2. 使用@ConfigurationProperties注解

@ConfigurationProperties注解提供了一种类型安全的方式来绑定配置属性到Java对象。

application.yml

app:name: MySpringBootAppversion: 1.0.0

Java类

import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Configuration;@Configuration
@ConfigurationProperties(prefix = "app")
public class AppConfig {private String name;private String version;// Getter and Setter methodspublic String getName() {return name;}public void setName(String name) {this.name = name;}public String getVersion() {return version;}public void setVersion(String version) {this.version = version;}
}

你还需要在Spring Boot的主类或者配置类上启用@EnableConfigurationProperties注解:

主类

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.context.properties.EnableConfigurationProperties;@SpringBootApplication
@EnableConfigurationProperties(AppConfig.class)
public class MySpringBootApplication {public static void main(String[] args) {SpringApplication.run(MySpringBootApplication.class, args);}
}

3. 使用Environment对象

你可以通过注入Environment对象来获取配置属性。

Java类

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.env.Environment;
import org.springframework.stereotype.Component;@Component
public class AppConfig {@Autowiredprivate Environment env;public String getAppName() {return env.getProperty("app.name");}public String getAppVersion() {return env.getProperty("app.version");}
}

4. 使用@PropertySource注解(不推荐用于YAML文件)

@PropertySource注解通常用于加载.properties文件,而不是.yml文件。但如果你坚持使用.properties文件,可以这样:

application.properties

app.name=MySpringBootApp
app.version=1.0.0

Java类

import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.PropertySource;
import org.springframework.stereotype.Component;@Component
@PropertySource("classpath:application.properties")
public class AppConfig {@Value("${app.name}")private String appName;@Value("${app.version}")private String appVersion;// Getter and Setter methodspublic String getAppName() {return appName;}public void setAppName(String appName) {this.appName = appName;}public String getAppVersion() {return appVersion;}public void setAppVersion(String appVersion) {this.appVersion = appVersion;}
}

注意:对于YAML文件,通常使用前面提到的@ConfigurationProperties@Value注解。

选择哪种方法取决于你的具体需求和偏好。@ConfigurationProperties提供了类型安全和结构化的方式来处理配置,因此通常被推荐用于复杂的配置对象。

http://www.lryc.cn/news/458784.html

相关文章:

  • YOLO11改进 | 注意力机制 | 结合静态和动态上下文信息的注意力机制
  • Python中函数的使用方法
  • 遨游智能终端赋能“危急特”场景,力推北斗技术规模化应用!
  • 构建流媒体管道:利用 Docker 部署 Nginx-RTMP 从 FFmpeg RTMP 推流到 HLS 播放的完整流程
  • 【汇编语言】寄存器(CPU工作原理)(六)—— 修改CS,IP的指令以及代码段
  • 机器学习与神经网络:从技术前沿到诺贝尔奖的跨越与未来展望
  • java 洛谷题单【数据结构1-2】二叉树
  • 项目优化内容及实战
  • 科研绘图系列:R语言蝴蝶图(Butterfly Chart)
  • 【FPGA开发】Modelsim如何给信号分组
  • Apache SeaTunnel 9月份社区发展记录
  • 系统架构设计师:数据库系统相关考题预测
  • 污水排放口细粒度检测数据集,污-水排放口的类型包括10类目标,10000余张图像,yolo格式目标检测,9GB数据量。
  • c++(多态)
  • 【网络协议】TCP协议常用机制——延迟应答、捎带应答、面向字节流、异常处理,保姆级详解,建议收藏
  • 财政部官宣: 国家奖学金,涨了!
  • antd table合并复杂单元格、分组合并行、分组合并列、动态渲染列、嵌套表头
  • 一键安装与配置Stable Diffusion,轻松实现AI绘画
  • 模板和静态文件
  • Android Studio 打包aar丢失远程依赖问题解决
  • Chromium 搜索引擎功能浅析c++
  • DDoS攻击快速增长,如何在抗ddos防护中获得主动?
  • MongoDB 死锁 锁定问题
  • 鸿蒙--商品列表
  • 【Fargo】5:根据网络带宽动态调整发送速率
  • 入门C语言:从原码、反码、补码到位运算
  • 18770 差值最大
  • 【Flutter】合并多个流Stream
  • 【SQL学习笔记】
  • contact form 7设置方法与详细步骤