配置文件
使用配置文件
经常修改,从源文件的编写到部署的过程,都需要重新修改.
解决方案:
把配置保存在一个文件中,
Java代码可以通过流(stream)动态的读取
真正解决的问题:
代码中的硬编码,写死到Java代码中,而且是经常改动的值
常用的配置文件
1.properties文件.
文件后缀名.properties,用来保存一些简单的数据.保存格式:key=value
重复的key表示更新操作,不能存多个用户信息
2.xml文件
文件后缀名.xml,用来保存一些复杂的数据,按照清晰的格式保存(结构化)
properties文件的基本使用
常见的操作
创建properties文件,并存储数据
1.文件存放在resource文件夹中.
2.在该配置文件中,所有数据到Java后,都是String类型
3.等号不需要空格
1 | #这是注释,保存格式:key=value |
使用jdk提供好的工具类来加载和获取
void load(InputStream inStream):通过输入流把数据加载到properties对象中
String getProperty(String key):通过指定的key获取value值
使用相对路径1
2//默认去bin中找
Thread.currentThread().getContextClassLoader().getResourceAsStream("user.properties");
1 | public class PropertiesTest { |
反射的优势
反射的应用场景
更多的是使用一个全限定名来创建对象(反射)
为了解决硬编码,为了降低代码的耦合性,一般将具体的实现类配置到配置文件中
1 | package me.cscar.con.reflect; |
优点:
1.反射提高了程序的灵活性和扩展性。
2.降低耦合性,提高自适应能力。
3.它允许程序创建和控制任何类的对象,无需提前硬编码目标类。
缺点:
1.性能问题:使用发射基本上是一种在运行期间解析字节码操作,效率较低,一般程序不建议使用,对灵活性和拓展性要求较高的工具或框架上使用较多。
2.代码复杂性:反射发生在运行期,程序员无法在源代码中看到程序的逻辑,反射代码比相应的直接的代码更复杂,因而会带来维护的问题
框架中大量使用反射,用来提高框架的扩展性和灵活性