在开发过程中,有些和系统功能相关的配置信息如果写死在程序中我个人认为是错误的,因为这样会降低程序的健壮性,而且一个程序的功能中有些功能在平时是不会被显示或者需要做一些参数的配置才会显示的特殊功能,那么就可以使用后缀为 *.properties的配置文件来做处理了。举例来说:一个程序中有许多功能,但是在不同客户的不同需求中,有些功能可能A客户需要而B客户不允许出现,此时如果将产品分成两个版本,不仅仅后期的维护不方便,而且浪费人力和精力。此时通过配置文件中不同的配置项。我们可以根据配置文件,在程序中进行不同的功能显示或者称为禁用某些功能。具体的实现希望大家自己去摸索,代码是死的方法确实活得。下面我简单介绍一下关于Properties类在程序中的用法。在需求中我有三个不同的数据库需要配置驱动 信息,那么为不同数据库写工具类是浪费时间而且不易维护的,我考虑通过配置文件来实现。
/**
* 需求:我有MySQL、Oracle、SQL Server三个数据库需要配置相关参数,此时我就可以将所有信息放在配置文件中,根据现场不同环境进行选择
* @author admin 通过调用properties中配置好的键值对来获取对应的链接信息
*/
public class JdbcUtil_01 {
/**
* 通过此方法可以获取到指定配置文件的相关配置信息
* @param path
* @return pro
*/
public Properties getConnection(String path) {
Properties pro = null;
InputStream in = null;
try {
// 通过配置文件根据键值对中的键获取到对应的值
pro = new Properties();
in = JdbcUtil_01.class.getClassLoader().getResourceAsStream(path);//获取当前的类加载器,并将配置文件转换为输入流
pro.load(in);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
try {
if (in != null) {
in.close();
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
return pro;
}
}
/**
* 这是一个测试类,用来获取测试配置文件信息
* @author admin
*
*/
public class Test {
public static void main(String[] args) {
JdbcUtil_01 j=new JdbcUtil_01();
//proper用来接收配置文件的信息
Properties proper=j.getConnection("com/test/jdbc/util/Jdbc_Info_001.properties");
//调用getProperty(Key)方法可以根据指定的Key获取到对应的值
String driver=proper.getProperty("DRIVER");
String url=proper.getProperty("URL");
String user=proper.getProperty("USER");
String password=proper.getProperty("PASSWORD");
System.out.println("这就是从配置文件中获取到的配置文件信息"+driver+"、"+url+"、"+user+"、"+password);
}
}在上述JdbcUtil_01类中将获取配置文件方法进行了封装,等待被调用。如下是配置文件:
从代码角度来说,只需要在对应的代码中调用配置文件的相关信息就可以了。举例来说,从配置文件中 9、10行可以看到通过给定不同的参数值(1代表true 0代表false),我可以设置用户权限开启,关闭管理员权限。当我要使用管理员权限时,只需要修改配置文件就可以了。当然了升级一下自己的思维,如果用户的参数可以有多个比如1、2、3分别代表不同的用户级别,可以实现很多有趣的功能。
说道这里,要说明一下的是配置文件的信息是明文的,相信只要稍微懂点英文或者电脑知识,修改这个文件是很容易的,所以具体要如何保证这个配置文件不被轻易改动,可以在代码中进行验证,但是如果被注入其他脚本,相信大家是不愿意的,所以就需要进行加密了。只是单纯地拓展思维。让大家了解一下什么是加密。具体的加密方面的知识,在后期会有所介绍。
相信现在大家通过帮助文档和上述内容已经基本掌握了Properties的用法了。但是具体的使用是灵活的,希望在开发中能给大家提供微薄的帮助信息。