Java 使用properties配置文件加载配置

Java 使用properties配置文件加载配置


一般我们不把数据库的配置信息写死在代码中,通常的做法是,把配置信息写在配置文件(文本文件)中,从配置文件中加载配置信息,这样运维就可以直接修改配置了,无需改动源码。

正确的做法:通过反射(Class对象)来加载资源文件

InputStream inputStream = 当前类的Class对象.getResourceAsStream("/mysql.properties");  

获取当前类的Class对象,有3种方式:

  1. 通过当前类的实例来获取Class对象

    InputStream inputStream = this.getClass().getResourceAsStream("/mysql.properties");  
    //getClass()是实例方法,只能通过对象来引用,不能通过类名来引用
    

    这种方式有个缺陷,因为使用的是this,所以这句代码所在的方法不能是静态的(static,类方法)。

    当然,硬要写成静态方法也行:

    InputStream inputStream = new test.Test().getClass().getResourceAsStream("/mysql.properties");
    

    不使用this,而是new一个当前类的实例。

  2. 通过当前类的class属性来获取Class对象

    InputStream inputStream=Test.class.getResourceAsStream("/mysql.properties");  //每个类都有class属性
    
  3. 通过Class.forName(“全类名”)来获取Class对象

    InputStream inputStream=Class.forName("test.Test").getResourceAsStream("/mysql.properties");  //forName()里是当前类的全类名
    

路径问题
这2种写法,资源文件的路径都是/开头,路径中并没有resource文件夹。

这2种都是从输出目录(部署目录)中加载资源文件。只有标识为Resource Root的文件夹run|debug时才会拷贝到输出目录|目录,拷贝时不拷贝资源根目录resource,直接把resource下的子文件、子文件夹拷贝到输出目录中项目的根目录下,所以路径以/开头,/表示项目的根目录。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值