初识配置文件与反射

来源:互联网 发布:什么是网络信息收集 编辑:程序博客网 时间:2024/06/10 17:00

前言

在开始重构之前有一些疑惑点,配置文件以及反射。虽然之前听过过,但是不清楚是什么,先认识一番。

配置文件

定义

配置文件是用户登录电脑时,或是用户在使用软件时,软件系统为用户所要加载所需环境的设置和文件的集合。它包括所有用户专用的配置设置,如程序项目、屏幕颜色、网络连接、打印机连接、鼠标设置及窗口的大小和位置等。 —— [ 百度 ]

区别

  1. 本地用户配置文件。在用户第一次登录到计算机上时被创建,这个本地用户配置文件被储存在计算机的本地硬盘驱动器上。
  2. 漫游用户。一个本地配置文件的副本被复制及储存在网络上的一个服务器共享上。
  3. 强制用户。一个本地配置文件的副本被复制及储存在网络上的一个服务器共享上。
  4. 临时的。只有在因一个错误而导致用户配置文件不能被加载时才会出现。临时配置文件允许用户登录并改正任何可能导致配置文件加载失败的配置。

作用

  1. 默认用户。被用作任何新用户的起始点。
  2. 所有用户。每个用户的”开始”菜单和桌面包含所有项目,这些内容是从”所有用户”的配置文件以及他或她自己的配置文件中来的。
  3. 网络服务和本地服务。网络服务和本地服务的配置文件是由WindowsXP为两个新的内置账号自动创建的,它们被服务控制管理器用来管理本地系统账号不需要运行的服务。

反射

定义

反射是提供封装程序集、模块和类型的对象。反射的核心是JVM在运行时才动态加载类或调用方法/访问属性,他不需要事先(写代码的时候或编译期)知道运行对象是谁。

拓展

反射是什么呢?当我们的程序运行时,需要动态的加载一些类,这些类可能之前用不到所以不用加载到jvm,而是在运行时根据需要才加载,这样对服务器来说就有很多好处。
举例(数据库切换):

我们的项目底层有时是用mysql,有时用oracle,需要动态地根据实际情况加载驱动类,这个时候反射就有用了,假设 com.java.dbtest.myqlConnection,com.java.dbtest.oracleConnection这两个类我们要用,这时候我们的程序就写得比较动态化,通过Class tc = Class.forName(“com.java.dbtest.TestConnection”);通过类的全类名让jvm在服务器中找到并加载这个类,而如果是oracle则传入的参数就变成另一个了。这时候就可以看到反射的好处了,这个动态性就体现出java的特性了!举多个例子,大家如果接触过spring,会发现当你配置各种各样的bean时,是以配置文件的形式配置的,你需要用到哪些bean就配哪些,spring容器就会根据你的需求去动态加载,你的程序就能健壮地运行。

—— [来自 万能的某乎 ]

优点

  1. 反射提高了程序的灵活性和扩展性。
  2. 降低耦合性,提高自适应能力。
  3. 它允许程序创建和控制任何类的对象,无需提前硬编码目标类。

缺点

  1. 性能问题:使用反射基本上是一种解释操作,用于字段和方法接入时要远慢于直接代码。因此反射机制主要应用在对灵活性和拓展性要求很高的系统框架上,普通程序不建议使用。
  2. 使用反射会模糊程序内部逻辑;程序员希望在源代码中看到程序的逻辑,反射却绕过了源代码的技术,因而会带来维护的问题,反射代码比相应的直接代码更复杂。

总结

对于概念还处在理解的层次,需要用实践深入的体会其中的含义。待有了更深刻的理解再来总结!

原创粉丝点击