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

【SpringBoot】SpringBoot 读取配置文件中的自定义属性的 5 种方法

SpringBoot 配置文件的格式有两种:yml、properties。有些方法都适用,但有些方法就有针对性了。

概括地说,Spring Boot 中读取配置文件有以下 5 种方法:

  1. 使用 @Value 读取配置文件(yml、properties)
  2. 使用 @ConfigurationProperties 读取配置文件(yml、properties)
  3. 使用 Environment 读取配置文件(yml、properties)
  4. 使用 @PropertySource 读取配置文件(yml、properties)
  5. 使用 原生方式 读取配置文件(properties)

如:配置文件内容:

yml 格式:

file:
  uploadPath: E:/upload

properites 格式:

file.uploadPath=E:/upload

1、 使用 @Value 读取配置文件

@SpringBootApplication
public class Application implements InitializingBean{

	@Value("${file.uploadPath}")
	private String profileName;

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

	@Override
	public void afterPropertiesSet() throws Exception {
		System.out.println(profileName);
	}
}

2、使用 @ConfigurationProperties 读取配置文件

@Data
@Component
@ConfigurationProperties(prefix = "file")
public class FileConfig {
    // 上传路径
    private String uploadPath;
}

3、使用 Environment 读取配置文件

将此类使用 @Autowired 注入到类中就可以使用它的 getProperty() 方法来获取某个配置项的值了

@SpringBootApplication
public class Application implements InitializingBean{

	@Autowired
	private Environment environment;

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

	@Override
	public void afterPropertiesSet() throws Exception {
		System.out.println(environment.getProperty("file.uploadPath"));
	}
}

4、使用 @PropertySource 读取配置文件
使用 @PropertySource 注解可以用来指定读取某个配置文件,比如指定读取 application.yml 配置文件的配置内容

@SpringBootApplication
@PropertySource("classpath:application.yml")
public class Application implements InitializingBean{

	@Value("${file.uploadPath}")
	private String path;

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

	@Override
	public void afterPropertiesSet() throws Exception {
		System.out.println(path);
	}
}

5、使用 原生方式 读取配置文件(properties)

就是使用 Properites 对象读取。

相关文章:

  • 前端的(typeScript)interface详解(个人学习用)
  • Android Studio应用基础,手把手教你从入门到精通(小白学习)总结2 之 常用界面布局和ListView
  • Flink Unaligned Checkpoint
  • 数据面最流行的工具包dpdk的前世-现在和未来
  • C++异步:asio的scheduler实现!
  • 跨境电商:YouTube视频营销必看攻略
  • 01 HTTP协议相关
  • 广州市车联网车联网先导区 V2X 云控基础平台技术规范
  • 怎么申报高新?流程是什么??
  • HFSS脚本建模入门
  • 「运维有小邓」自助AD更新
  • 【LeetCode】双指针题总结(持续更新)
  • 专业的ADAS测试记录仪ETHOS
  • 【Java面试】听说Java求职者/面试官都关注了我,这道面试题一个空Object对象的占多大空间?你答的上来吗
  • CAD如何使插入的块为分解状态?CAD如何绘制五瓣花?
  • JavaScript 如何正确处理 Unicode 编码问题!
  • Angular 响应式表单之下拉框
  • el-input获取焦点 input输入框为空时高亮 el-input值非法时
  • ES6 ...操作符
  • ES6, React, Redux, Webpack写的一个爬 GitHub 的网页
  • HTTP--网络协议分层,http历史(二)
  • Java程序员幽默爆笑锦集
  • use Google search engine
  • yii2权限控制rbac之rule详细讲解
  • 盘点那些不知名却常用的 Git 操作
  • 区块链共识机制优缺点对比都是什么
  • 如何设计一个微型分布式架构?
  • 通过git安装npm私有模块
  • 在GitHub多个账号上使用不同的SSH的配置方法
  • ​ArcGIS Pro 如何批量删除字段
  • ​Z时代时尚SUV新宠:起亚赛图斯值不值得年轻人买?
  • ​如何防止网络攻击?
  • #NOIP 2014# day.1 T2 联合权值
  • #Spring-boot高级
  • %3cscript放入php,跟bWAPP学WEB安全(PHP代码)--XSS跨站脚本攻击
  • (4.10~4.16)
  • (备忘)Java Map 遍历
  • (附源码)springboot“微印象”在线打印预约系统 毕业设计 061642
  • (附源码)计算机毕业设计大学生兼职系统
  • (每日持续更新)信息系统项目管理(第四版)(高级项目管理)考试重点整理 第13章 项目资源管理(七)
  • (转)es进行聚合操作时提示Fielddata is disabled on text fields by default
  • (转)四层和七层负载均衡的区别
  • (轉貼) 2008 Altera 亞洲創新大賽 台灣學生成果傲視全球 [照片花絮] (SOC) (News)
  • . ./ bash dash source 这五种执行shell脚本方式 区别
  • .\OBJ\test1.axf: Error: L6230W: Ignoring --entry command. Cannot find argumen 'Reset_Handler'
  • .NET MVC第五章、模型绑定获取表单数据
  • .NET 常见的偏门问题
  • .php结尾的域名,【php】php正则截取url中域名后的内容
  • .ui文件相关
  • /使用匿名内部类来复写Handler当中的handlerMessage()方法
  • @我的前任是个极品 微博分析
  • [ C++ ] STL_vector -- 迭代器失效问题
  • [Android]How to use FFmpeg to decode Android f...
  • [Angularjs]ng-select和ng-options
  • [BZOJ1089][SCOI2003]严格n元树(递推+高精度)