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

java-静态工具类获取YAML配置文件中的值

文章目录

  • 前言
    • java-静态工具类获取YAML配置文件中的值
      • 1. 工具类
      • 2. 测试

前言

  如果您觉得有用的话,记得给博主点个赞,评论,收藏一键三连啊,写作不易啊^ _ ^。
  而且听说点赞的人每天的运气都不会太差,实在白嫖的话,那欢迎常来啊!!!


java-静态工具类获取YAML配置文件中的值

由于静态工具类无法直接通过Spring容器注入依赖项,需要使用一些变通的方法。

1. 工具类

package org.example.util;import org.apache.commons.lang3.ObjectUtils;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.env.Environment;
import org.springframework.core.io.Resource;
import org.springframework.core.io.ResourceLoader;
import org.springframework.stereotype.Component;import java.io.IOException;
import java.io.InputStream;/**
* @description: TODO
* @author 杨镇宇
* @date 2024/7/31 11:00
* @version 1.0
*/
@Component
public class EnvironmentUtil {private static Environment environment;private static ResourceLoader resourceLoader;private static Logger log = LoggerFactory.getLogger(EnvironmentUtil.class);@Autowiredpublic EnvironmentUtil(Environment environment,ResourceLoader resourceLoader) {EnvironmentUtil.environment = environment;EnvironmentUtil.resourceLoader = resourceLoader;}public static String getProperty(String key) {return environment.getProperty(key);}public static InputStream getFile(String key) throws IOException {if (StringUtils.isBlank(key)){log.error("key is null");return null;}if (!StringUtils.contains(key,"classpath:")){log.error("key is contains classpath:");return null;}Resource resource = resourceLoader.getResource(key);return resource.getInputStream();}}

这段代码利用了静态方法和静态变量的方式,提供了获取配置属性和加载类路径下资源的便捷方法。通过 Spring 的依赖注入机制,将 Environment 和 ResourceLoader 注入到静态变量中,使得这些方法能够在任何地方调用,并且可以方便地访问应用程序的配置信息和资源文件。

2. 测试

public class TestUtil {public static void test(){String property = EnvironmentUtil.getProperty("server.ssl.trust-store");try (InputStream testInputStream = EnvironmentUtil.getFile(property)) {System.out.printf(property);} catch (IOException e) {e.printStackTrace();}}
}

在这里插入图片描述

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Vue 模版编译原理
  • git fetch和 pull的区别
  • Java基本语法学习的案例练习
  • nginx续1:
  • 商家转账到零钱开通最快捷径
  • 为什么阿里开发手册不建议使用Date类?
  • rust 初探 -- 路径(path)
  • 嵌入式必备知识总结(一)
  • 多模态大模型
  • 基于Laravel打造,模块化开发框架助力项目快速落地 Modstart
  • 黑马JavaWeb后端案例开发(包含所有知识点!!!)
  • Serverless Knative冷启动与自动扩缩容研究:从原理到实践
  • 数据结构之《栈》
  • Redis:十大数据类型
  • react antd upload custom request处理多个文件上传
  • [PHP内核探索]PHP中的哈希表
  • 【跃迁之路】【641天】程序员高效学习方法论探索系列(实验阶段398-2018.11.14)...
  • avalon2.2的VM生成过程
  • docker python 配置
  • interface和setter,getter
  • java8-模拟hadoop
  • jdbc就是这么简单
  • mac修复ab及siege安装
  • NSTimer学习笔记
  • PHP 程序员也能做的 Java 开发 30分钟使用 netty 轻松打造一个高性能 websocket 服务...
  • PHP的类修饰符与访问修饰符
  • python3 使用 asyncio 代替线程
  • Vue全家桶实现一个Web App
  • 如何合理的规划jvm性能调优
  • 想写好前端,先练好内功
  • 一加3T解锁OEM、刷入TWRP、第三方ROM以及ROOT
  • 掌握面试——弹出框的实现(一道题中包含布局/js设计模式)
  • 这几个编码小技巧将令你 PHP 代码更加简洁
  • nb
  • ​数据结构之初始二叉树(3)
  • #etcd#安装时出错
  • #Spring-boot高级
  • #systemverilog# 之 event region 和 timeslot 仿真调度(十)高层次视角看仿真调度事件的发生
  • (2)(2.4) TerraRanger Tower/Tower EVO(360度)
  • (9)目标检测_SSD的原理
  • (BFS)hdoj2377-Bus Pass
  • (C++17) optional的使用
  • (pojstep1.1.1)poj 1298(直叙式模拟)
  • (回溯) LeetCode 40. 组合总和II
  • (四)c52学习之旅-流水LED灯
  • (五)activiti-modeler 编辑器初步优化
  • (原創) 如何解决make kernel时『clock skew detected』的warning? (OS) (Linux)
  • (转)linux自定义开机启动服务和chkconfig使用方法
  • (最完美)小米手机6X的Usb调试模式在哪里打开的流程
  • .ai域名是什么后缀?
  • .mysql secret在哪_MYSQL基本操作(上)
  • .NET 8 跨平台高性能边缘采集网关
  • .NET Compact Framework 3.5 支持 WCF 的子集
  • .NET Core工程编译事件$(TargetDir)变量为空引发的思考
  • .net 写了一个支持重试、熔断和超时策略的 HttpClient 实例池