不惊扰源码之配置数据变动 ----.properties配置文件 (Java 工具类 Properties)

配置数据最小变动成本

配置数据是什么

当我们用JDBC访问数据库的时候加载驱动需要驱动参数

driverClass = 'com.mysql.cj.jdbc.Driver';
Class.forName(driverClass);

获取连接需要三个连接参数

url = "jdbc:mysql://localhost:3306/examonline?serverTimezone=UTC&useSSL=false"
user = "****"
pwd = "******"
Connection conn = DriverManager.getConnection(url, user, pwd);

这里的driverClass,url, user ,pwd 便是配置参数。

变动成本

在开发一个软件的时候,
成本1: 这四个参数若是直接写在源代码里
那么在软件发布后,若配置参数发生变化,我们需要修改源码,然后重新发布。用户需要重新下载整个软件。
成本2: 这四个参数写在一个配置文件里,软件发布后,当配置参数发生变化,此时只需要改变配置文件,不动源码,不需要重新下载整个软件。

配置文件

在java项目里新建一个 .properties 文件
书写方式以上面的参数为例

driverClass = com.mysql.cj.jdbc.Driver
url = jdbc:mysql://localhost:3306/examonline?serverTimezone=UTC&useSSL=false
user = *****
pwd = ******
访问配置文件(Properties类)

Java为访问 .properties 文件 专写了一个Properties类使用方式如下

Properties prop = new Properties();
File file = new File(pathname);//pathname 文件的(绝对、相对)路径 
try{
	prop.load(new FileInputStream(file));//加载配置文件以文件流形式
}catch (IOException)
{
	e.printStackTrace()
}
//获得相应的值
driverClass = prop.getProperty("driverClass");
url = prop.getProperty("url");
pwd = prop.getProperty("pwd");
user = prop.getProperty("user");

这样四个参数就从properties文件中获得了配置参数
由获得的形式我们可以知道,每一对在properties文件中的数据是以键值对的形式被关联访问的的。
写到这,本文还没有到结尾!
从上面的代码来看,pathname是我们文件的路径,而路径一写在源码里,它也相当于配置参数,被固定在了源码中,所以我们遇到了同样的问题,配置参数被写死在源码中!
有办法解决吗?当然

Properties prop = new Properties();
String filename = "db.properties";//文件名 这是我的properties文件的名称
try{
	prop.load(JdbcDemo.class.getClassLoader().getResourceAsStream(fileName));//类加载的形式获取文件流 JdbcDemo是我的一个类 是当前代码所在的类名
}catch (IOException)
{
	e.printStackTrace()
}
//获得相应的值
driverClass = prop.getProperty("driverClass");
url = prop.getProperty("url");
pwd = prop.getProperty("pwd");
user = prop.getProperty("user");

通过这样的方式,我们只需要写入文件的名称,就可以从该文件中获取配置数据,而不需要固定文件的所在位置。

写到这,配置数据被写死的现象就没有了!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值