返回顶部
首页 > 资讯 > 精选 >怎样读取properties或yml文件数据并匹配
  • 395
分享到

怎样读取properties或yml文件数据并匹配

2023-06-22 02:06:50 395人浏览 安东尼
摘要

今天就跟大家聊聊有关怎样读取properties或yml文件数据并匹配,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。读取properties或yml文件数据并匹配使用SpringBo

今天就跟大家聊聊有关怎样读取properties或yml文件数据并匹配,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。

读取properties或yml文件数据并匹配

使用SpringBoot获取配置的文件的数据有多种方式,其中是通过注解@Value,此处通过io获取配置文件内容。

此前已经在另外的test.xml文件中的bean中可设置xx或yy,这里实现如果test.xml文件中没有设置,可在application.*文件中进行设置。

如下:

try {                InputStream stream = getClass().getClassLoader().getResourceAsStream("application.properties");                if(stream == null){                    stream = getClass().getClassLoader().getResourceAsStream("application.yml");                    InputStreamReader in = new InputStreamReader(stream, "gbk");                    BufferedReader reader = new BufferedReader(in);                    String line;                    while ((line = reader.readLine()) != null) {                        if(line.trim().split(":")[0].contentEquals("xx")){                        //在test.xml中读取后可通过set传值。这里也可以自己通过设置相应参数的set方法进行传值                            this.setXX(line.trim().split(":")[1].trim());                         }else if(line.trim().split(":")[0].contentEquals("yy")){                            this.setYY(line.trim().split(":")[1].trim());                        }                    }                }else{                    InputStreamReader in = new InputStreamReader(stream, "gbk");                    BufferedReader reader = new BufferedReader(in);                    String line;                    while ((line = reader.readLine()) != null) {                        if(line.trim().split("=")[0].contentEquals("xx")){                        //在test.xml中读取后可通过set传值。这里也可以自己通过设置相应参数的set方法进行传值                            this.setXX(line.trim().split(":")[1].trim());                         }else if(line.trim().split("=")[0].contentEquals("yy")){                            this.setYY(line.trim().split(":")[1].trim());                        }                    }                }            } catch (FileNotFoundException e) {                logger.error("无法找到application.*文件",e);            } catch (IOException e) {                logger.error("读取配置文件的ip或port有问题",e);            }

读取yml,properties配置文件几种方式小结

1-@value

@Value("${keys}")private String key;

这里需要注意的是

  • 当前类要交给spring来管理

  • @Value不会赋值给static修饰的变量。

因为Spring的@Value依赖注入是依赖set方法,而自动生成的set方法是普通的对象方法,你在普通的对象方法里,都是给实例变量赋值的,不是给静态变量赋值的,static修饰的变量,一般不生成set方法。若必须给static修饰的属性赋值可以参考以下方法

private static String url;   // 记得去掉static @Value("${mysql.url}") public void setDriver(String url) {          JdbcUtils.url= url; }

但是该方案有个弊端,数组应该如何注入呢?

2-使用对象注入

auth:   clients:     - id:1      passWord: 123    - id: 2      password: 123
@Component@ConfigurationProperties(prefix="auth")public class IgnoreImageIdConfig { private List<Map<String,String>> clients =new ArrayList<Integer>(); }

利用配置Javabean的形式来获得值,值得注意的是,对象里面的引用名字(‘clients'),必须和yml文件中的(‘clients')一致,不然就会取不到数据,另外一点是,数组这个对象必须先new出来,如果没有对象的话也会取值失败的,(同理map形式也必须先将map对应的对象new出来)。

3-读取配置文件

 private static final String FILE_PATH = "classpath:main_data_sync.yml";    static Map<String, String> result = null;    private static Properties properties = null;    private YmlUtil() {    }        public static Map<String, String> getYmlByFileName(String filePath, String... keys) {        result = new HashMap<>(16);        if (filePath == null) {            filePath = FILE_PATH;        }        InputStream in = null;        File file = null;        try {            file = ResourceUtils.getFile(filePath);            in = new BufferedInputStream(new FileInputStream(file));            Yaml props = new Yaml();            Object obj = props.loadAs(in, Map.class);            Map<String, Object> param = (Map<String, Object>) obj;            for (Map.Entry<String, Object> entry : param.entrySet()) {                String key = entry.geTKEy();                Object val = entry.getValue();                if (keys.length != 0 && !keys[0].equals(key)) {                    continue;                }                if (val instanceof Map) {                    forEachYaml(key, (Map<String, Object>) val, 1, keys);                } else {                    String value = val == null ? null : JSONObject.tojsONString(val);                    result.put(key, value);                }            }        } catch (FileNotFoundException e) {            e.printStackTrace();        }        return result;    }    public static Map<String, String> forEachYaml(String keyStr, Map<String, Object> obj, int i, String... keys) {        for (Map.Entry<String, Object> entry : obj.entrySet()) {            String key = entry.getKey();            Object val = entry.getValue();            if (keys.length > i && !keys[i].equals(key)) {                continue;            }            String strNew = "";            if (StringUtils.isNotEmpty(keyStr)) {                strNew = keyStr + "." + key;            } else {                strNew = key;            }            if (val instanceof Map) {                forEachYaml(strNew, (Map<String, Object>) val, ++i, keys);                i--;            } else {                String value = val == null ? null : JSONObject.toJSONString(val);                result.put(strNew, value);            }        }        return result;    }        public static String getProperties(String filePath,String key) throws IOException {        if (properties == null) {            Properties prop = new Properties();            //InputStream in = Util.class.getClassLoader().getResourceAsStream("testUrl.properties");            InputStream in = new BufferedInputStream(new FileInputStream(ResourceUtils.getFile(filePath)))  ;            prop.load(in);            properties = prop;        }        return properties.getProperty(key);    }    public static void main(String[] args) {                try {            String properties = getProperties("classpath:test.properties", "fileServerOperator.beanName");            System.out.println(properties);        } catch (IOException e) {            e.printStackTrace();        }    }
auth:  #认证  clients:    - id: 1      secretKey: ba2631ee44149bbe #密钥key    - id: 2      secretKey: ba2631ee44149bbe #密钥key

看完上述内容,你们对怎样读取properties或yml文件数据并匹配有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注编程网精选频道,感谢大家的支持。

--结束END--

本文标题: 怎样读取properties或yml文件数据并匹配

本文链接: https://lsjlt.com/news/302076.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 怎样读取properties或yml文件数据并匹配
    今天就跟大家聊聊有关怎样读取properties或yml文件数据并匹配,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。读取properties或yml文件数据并匹配使用springbo...
    99+
    2023-06-22
  • 如何读取properties或yml文件数据并匹配
    目录读取properties或yml文件数据并匹配读取yml,properties配置文件几种方式小结1-@value2-使用对象注入3-读取配置文件读取properties或yml...
    99+
    2024-04-02
  • SpringBoot怎么实现读取YML,yaml,properties文件
    本篇内容主要讲解“SpringBoot怎么实现读取YML,yaml,properties文件”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“SpringBoot怎么实现读取YML,yaml,pro...
    99+
    2023-07-06
  • java怎么读取yml配置文件
    在Java中读取YAML配置文件可以使用SnakeYAML库。以下是一个简单的示例,演示了如何读取YAML配置文件:1. 首先,确保...
    99+
    2023-08-18
    java
  • java怎么读取properties配置文件
    在Java中,可以使用`java.util.Properties`类来读取.properties配置文件。下面是一个简单的示例代码:...
    99+
    2023-09-20
    java
  • ajax怎么读取properties资源文件数据
    本篇内容主要讲解“ajax怎么读取properties资源文件数据”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“ajax怎么读取properties资源文件数据...
    99+
    2024-04-02
  • Springboot读取yml配置文件里的参数值
    目录方式一 方式二 总结 方式一 1.yml配置 yml配置(示例): api: mes: MES_SOCKET: http://192.168.99.140:...
    99+
    2024-04-02
  • properties配置文件怎么利用java进行读取
    本篇文章给大家分享的是有关properties配置文件怎么利用java进行读取,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。具体如下:import java.io.FileNo...
    99+
    2023-05-31
    java properties ava
  • SpringBoot读取yml文件中配置数组的2种方法
    目录通过@ConfigurationProperties注解读取1、读取的是配置在application.yml文件中的属性2、如果配置是在一个单独的yml文件中通过@Value注解...
    99+
    2024-04-02
  • Android怎么读取并配置文件
    这篇文章主要讲解了“Android怎么读取并配置文件”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Android怎么读取并配置文件”吧!配置properties文件先创建properties...
    99+
    2023-06-05
  • java怎么从配置文件读取数据
    要从配置文件中读取数据,可以使用Java的Properties类。以下是一个示例代码:```javaimport java.io.F...
    99+
    2023-08-17
    java
  • ES怎样读取Json文件并添加索引
    ES怎样读取Json文件并添加索引,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。今天学习了下,ES添加索引:       ...
    99+
    2023-06-03
  • 怎么使用Golang并发读取文件数据并写入数据库
    本篇内容介绍了“怎么使用Golang并发读取文件数据并写入数据库”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!项目结构data文件夹中包含数...
    99+
    2023-07-02
  • c语言怎么读取文件数据并保存
    在C语言中,可以使用stdio.h头文件中的函数来读取文件数据并保存。具体步骤如下:1. 打开文件:使用fopen函数打开要读取的文...
    99+
    2023-08-15
    c语言
  • c语言怎么打开文件并读取数据
    在C语言中,可以使用fopen函数来打开文件,并使用fscanf函数来从文件中读取数据。 以下是一个示例代码: #include &...
    99+
    2024-02-29
    c语言
  • python读取eml文件并用正则表达式匹配邮箱的代码
    目录下面看看python正则表达式匹配邮箱1. 一次匹配多个邮箱的情况2. 一次匹配一个今天接到一个需求有一个同事离职了,但是留下了非常多(2W多封)的邮件,我需要将他的邮件进行分类...
    99+
    2022-11-13
    python读取eml文件 python 正则匹配邮箱
  • python怎么读取数据文件
    使用python读取文件数据的方法:1.新建python项目;2.导入pandas模块;3.使用pd.read方法读取文件数据;具体步骤如下:首先,打开python,并新建一个python项目;python项目创建好后,在项目中使用impo...
    99+
    2024-04-02
  • mysql怎么读取数据库配置文件路径
    mysql中获取数据库配置文件路径的方法首先,在命令行中,启动MySQL服务;service mysql start   MySQL服务启动后,输入用户名和密码,登录mysql数据库;mysql -u ...
    99+
    2024-04-02
  • C#中怎么读取Excel文件并存入数据库
    C#中怎么读取Excel文件并存入数据库,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。 protected void Page_Load(obje...
    99+
    2023-06-18
  • 怎么用C++实现文件逐行读取与字符匹配
    今天小编给大家分享一下怎么用C++实现文件逐行读取与字符匹配的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。技术背景用惯了py...
    99+
    2023-07-05
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作