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();}}
}