在我JDBC的文章末尾展示了完整的JDBC使用流程。但那种方式有一个问题,如果项目需要更换数据库,或者这个项目本来就是要使用多种数据库,那么像这种把信息写死在代码里边的编写模式,是肯定不行的。实际开发中肯定不会使用这种把信息写死在代码里面的方法,像数据库的URL、连接路径这些配置信息,会单独用一个文件存储起来,这种编写模式其实就是"解耦"的思想体系。在代码量少、重复不多的时候,这边编写的优势不明显,但一旦项目大了之后,或者说要拓展功能,这种拆解分藕的模式就十分有益了。
Java的Util包相信并不陌生,这是java提供的工具类,Propertiers作为获取配置文件信息的类,也被分到了这一个包下。
.properties配置文件
配置文件其实是修改了文件格式后缀的txt文本文件。内容分为:头部信息和配置信息:
配置文件不要乱写,即便一行的数据很长也要将它们放在一行里面。这个后面在load方法处会提
Properties类简介
Properties类结构
Properties类继承了Hashtable,读取配置文件后以键值对的形式将数据存放到本类对象中。这里加载一下我上面展示的MySQL配置文件
Properties类常用方法
Properties类常用的方法主要有:
1.load(Reader r) / load(InputStream i):
读取 xxx.properties配置文件的信息
Reader:按简单的面向行的格式从输入字符流中读取属性列表(键和元素对)
InputStream :从输入流中读取属性列表(键和元素对)
为什么配置文件里数据要一行一行写,因为load方法是一行一行地读取数据的
LineReader是Properties的内部类
2.getProperty(String key) / getProperty(String key,String defaultValue):
String:传入一个String的key,并找到对应的value。假如使用前面的信息,调用getPropertry("username")会得到String的对象: "root"。如果没有这个键值对,会返回null
String key,String def:在前者基础上判断。如果key没有找到对应的value,那么会返回def
3.setProperty(String key,String value)
添加配置信息到properties对象里(也就是内存),不会直接影响到硬盘中的配置文件,尔后可以选择将内存中的配置信息同步到存储中的配置文件里。
注意:Properties类因为继承了Hashtable类,所有有有着Hashtable中的put()等方法,且这些继承自父类的方法允许编程人员调用,将不是String类的数据加入到Properties类对象中。而出于数据安全,Properties类对象如果添加了不是String类型的数据,在被调用时会报错,阻止编程人员使用。
4.store(...)
store(OutputStream out, String comments)
store(Writer writer, String comments):
按load用的配置文件的格式将配置信息书写到对应的文件中。其中,
out和writer是对应的文件路径,要一直书写文件名到。格式为:
.../jdbc.properties
comments是文件说明,可以理解为备注,会写在配置文件的头部信息里面。
storeToXML(OutputStream os, String comment)
写出一个包含此表中所有属性的XML文档。
storeToXML(OutputStream os, String comment, String encoding)
用指定的编码格式 (也就是encoding) 写XML文档。