【JAVA开发小技巧】Properties类读取properties、yml配置文件中的内容


前言

当我们将项目部署到服务器上之后,我们不能专门地对代码中的常量进行修改,除非更新部署新的项目,但是我们的项目在上次更新之后,很有可能在其它方面也做了更新升级,这些更新的内容只有在通过测试之后才有资格部署到生产环境下。所以我们要想办法,解除常量与项目代码的耦合度,解决办法就是,当我们将项目部署到生产环境之后,能将项目中的常量进行配置化的管理。也就是说,项目中的常量最好是来源于配置文件的读取,这样我们只要修改配置文件即可修改项目中的常量。


一、读取配置文件的方法

在搭建了Spring的项目中,读取配置文件最简单的方法就是使用@Value注解读取配置文件中的常量,但是有些项目并没有搭建Spring,所以本文要讨论的是如何在不使用@Value的状况下获取到配置文件中的内容。

JAVA代码中读取properties文件的内容要用到一个类,Properties。Properties类表示一组持久的属性。 Properties可以保存到流中或从流中加载。 属性列表中的每个键及其对应的值都是一个字符串。

Properties类常用的方法如下:
在这里插入图片描述
我们逐一看看如何使用这些方法:
1.getProperty方法:这个方法使用起来很简单,就是通过配置文件中的键获得对应的值,两个参数的情况传入一个默认值。
2.list方法:将配置文件得到的属性列表输出到指定的输出流当中。
3.load方法和loadFromXML方法:毫无疑问,这两个方法就是将配置文件读取到Properties对象当中,前者用于读取properties文件,后者用于读取xml文件。
4.propertyNames方法和stringPropertyNames方法:这两个方法可以返回配置文件中的属性列表,propertyNames方法返回Enumeration类型,stringPropertyNames方法返回不存在重复元素的Set类型。
5.setProperty方法:类似HashMap的put方法。
6.store方法和storeToXML方法:都是将属性列表保存到输出流当中。

二、读取配置文件案例

1.读取properties文件

比如我们想读取配置文件conf.properties中的键值对,保存到内存的Map当中,conf.properties的内容如下:

jdbc.driverClassName=oracle.jdbc.driver.OracleDriver
jdbc.url=jdbc:oracle:thin:@192.168.0.1:1521
jdbc.username=oracle
jdbc.password=oracle

conf.properties直接配置在类加载路径下,我们可以通过以下代码读取:

public class PropertiesTest {
    private static Map<String, String> propertiesMap = new HashMap<>();
    // 将配置文件中的所有键值对读取到Map中
    public static void main(String[] args) {
        // 读取依赖配置对象
        Properties properties = new Properties();
        // 读取输入流
        InputStream inputStream = PropertiesTest.class.getClassLoader().getResourceAsStream("conf.properties");
        // 输入流加载过程中可能抛出IO异常
        try {
            // 从输入流中加载属性列表
            properties.load(inputStream);
            // 获取properties文件中的属性值
            Set<String> propertyNameSet = properties.stringPropertyNames();
            for (String propertyKey : propertyNameSet) {
                String propertyValue = properties.getProperty(propertyKey);
                if(propertyKey != null && propertyValue != null){
                    propertiesMap.put(propertyKey, propertyValue);
                }
            }
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            try{
                // 关闭IO流,防止内存泄漏
                assert inputStream != null;
                inputStream.close();
            } catch (Exception e){
                e.printStackTrace();
            }
        }
    }

}

2.读取yml文件

除了properties作为配置文件,我们也常常可以看到使用yml甚至是yaml作为配置文件的Spring项目,虽然它们和properties的配置作用十分相似,不过读取内容的方法还是很不同的,读取yml文件的方法有很多种,而本文的重点是讨论用Properties类来读取yml配置文件。
在Spring项目中可以用到YamlPropertiesFactoryBean类,来读取并加载yml配置文件到Properties类,所以读取方法如下:

YamlPropertiesFactoryBean yamlProFb = new YamlPropertiesFactoryBean();
yamlProFb.setResources(new ClassPathResource("application.yml"));
Properties MyProperties = yamlProFb.getObject();

在获取到Properties对象之后,我们仿照读取properties文件的方法,将内容保存到Map当中,或者另做它用,比如加载数据源配置信息到数据源对象当中。


后话

我们常常通过读取配置文件中对于数据库的配置,从而加载数据源对象到内存当中,接下来,我们可以通过数据源对象并通过JAVA原装的JDBC访问数据库:(待更新)
至于读取xml配置文件的内容,我们一般用的是DOM4j来实现,详情可见:(待更新)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值