当前位置: 首页 > news >正文

学会 配置文件+反射,走遍全球都不怕.

在应用分层思想的过程中,我们常使用MVC三层架构来处理项目需求的变更。

项目开发过程中,最典型的就是为灵活更换数据库而使用"配置文件+反射"处理需求变更.当然我们还有很多其他的相关信息可以存放到配置文件中,进而把这种系统配置做活.而不是因为有需求变更的时候,去更改源码以达到要求.

Java.NET下的"配置文件+反射" 是一样一样滴,都是在配置文件中配置好项目信息 -->写一个配置读取类,获取配置信息 -->把配置信息应用到项目具体代码中。

我们从事开发,学习语言,语言满天下,学习哪一门呢? 其实,没有哪一门会持久辉煌,没有哪一门会一事无成。接触多了,大家会慢慢发现,众多语言都是表里叔亲。抓住核心共同点,也就抓住了这个行业的中坚。

我们今天学会了配置文件+反射,就学会了这样的一种解耦思想和灵活变通的方法,八要学1会1,好好想想为什么这种方法会备受瞩目得到应用?

我们要学会 提纲挈领、追本求源,看透这些技术的表面,抓住这种技术出现的时机背景,发散性的思考我们还有哪些地方是需要这种思想方法的,把问题上移,寻求更深层的答案。让我们做技术做出思想家的感觉来。Oh,Yeah ~

<!-- sys-config.xml 配置文件--> <?xml version="1.0" encoding="UTF-8"?> <config> <db-info> <driver-name>oracle.jdbc.driver.OracleDriver</driver-name> <url>jdbc:oracle:thin:@127.0.0.1:1521:orcl</url> <username>lfsfxy9</username> <password>lfsfxy9</password> </db-info> <item-dao-factory>com.tgb.drp.basedata.factory.daoOracleFactory</item-dao-factory> </config>

//ConfigReader类,xml配置文件读取类。 import org.dom4j.Document; import org.dom4j.DocumentException; import org.dom4j.Element; import org.dom4j.io.SAXReader; import com.tgb.drp.basedata.factory.ItemDaoFactory; /** * 采用单例模式读取xml配置文件sys-config.xml * * @author lfsfxy9 * */ public class ConfigReader { private static ConfigReader instance = new ConfigReader(); private Document doc; private JdbcInfo jdbcInfo; private String daoFactoryString; private ConfigReader() { try { doc = new SAXReader().read(Thread.currentThread() .getContextClassLoader().getResourceAsStream( "sys-config.xml")); Element driverNameElt = (Element) doc .selectObject("/config/db-info/driver-name"); Element urlElt = (Element) doc.selectObject("/config/db-info/url"); Element usernameElt = (Element) doc .selectObject("/config/db-info/username"); Element passwordElt = (Element) doc .selectObject("/config/db-info/password"); jdbcInfo = new JdbcInfo(); jdbcInfo.setDriverName(driverNameElt.getStringValue()); jdbcInfo.setUrl(urlElt.getStringValue()); jdbcInfo.setUsername(usernameElt.getStringValue()); jdbcInfo.setPassword(passwordElt.getStringValue()); //以上都是读取xml中的数据库链接信息。 //下面是读取xml中<dao-factory>节点的配置信息。 Element daoFactoryElt = (Element)doc.selectObject("/config/dao-factory"); daoFactoryString = daoFactoryElt.getStringValue(); } catch (DocumentException e) { e.printStackTrace(); } } /** * 读取itemdaofactory的配置信息.使用的oracle数据库 * @return */ public String getDaoFactoryString(){ return daoFactoryString; } }

//从ConfigReader类提供的方法中获取配置文件的相关参数信息. String className = ConfigReader.getInstance().getDaoFactoryString(); try { //根据读取配置文件,从而决定实例化哪种数据库处理类。 factory = (DaoFactory)Class.forName(className).newInstance(); } catch (InstantiationException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IllegalAccessException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (ClassNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); }

相关文章:

  • Notification
  • rhel7使用centos7yum组件
  • IDC:Android市场占有率仍未超越Symbian
  • eclipse EE neon创建dynamic web project时,卡在installing dynamic web module facet,解决办法...
  • 苹果今日之成功源自十年前四项投资
  • bzoj 3357: [Usaco2004]等差数列
  • CMD与AMD区别
  • 《用户故事与敏捷方法》-否
  • MyEclipse黑色主题
  • 又要,开始麻木
  • FTP 访问的形式
  • 程序员面试一句话让HR面无人色——Leo网上答疑(56)
  • Spark BlockManager的通信及内存占用分析(源码阅读九)
  • Windows Phone 7 不温不火学习之《画图》
  • 20145228《信息安全系统设计基础》第四次实验实验报告
  • Angular 4.x 动态创建组件
  • cookie和session
  • ES学习笔记(12)--Symbol
  • Fundebug计费标准解释:事件数是如何定义的?
  • Hexo+码云+git快速搭建免费的静态Blog
  • HTTP传输编码增加了传输量,只为解决这一个问题 | 实用 HTTP
  • in typeof instanceof ===这些运算符有什么作用
  • java中具有继承关系的类及其对象初始化顺序
  • magento2项目上线注意事项
  • MySQL Access denied for user 'root'@'localhost' 解决方法
  • nodejs:开发并发布一个nodejs包
  • PHP CLI应用的调试原理
  • Python语法速览与机器学习开发环境搭建
  • 开发基于以太坊智能合约的DApp
  • 《TCP IP 详解卷1:协议》阅读笔记 - 第六章
  • hi-nginx-1.3.4编译安装
  • LIGO、Virgo第三轮探测告捷,同时探测到一对黑洞合并产生的引力波事件 ...
  • 摩拜创始人胡玮炜也彻底离开了,共享单车行业还有未来吗? ...
  • ​​​​​​​​​​​​​​汽车网络信息安全分析方法论
  • (12)目标检测_SSD基于pytorch搭建代码
  • (done) 两个矩阵 “相似” 是什么意思?
  • (rabbitmq的高级特性)消息可靠性
  • (附源码)springboot金融新闻信息服务系统 毕业设计651450
  • (三)c52学习之旅-点亮LED灯
  • (十二)python网络爬虫(理论+实战)——实战:使用BeautfulSoup解析baidu热搜新闻数据
  • (转)我也是一只IT小小鸟
  • ***详解账号泄露:全球约1亿用户已泄露
  • .net core 微服务_.NET Core 3.0中用 Code-First 方式创建 gRPC 服务与客户端
  • .NET MAUI学习笔记——2.构建第一个程序_初级篇
  • .sh
  • @Data注解的作用
  • [ 数据结构 - C++]红黑树RBTree
  • [.net]官方水晶报表的使用以演示下载
  • [20180312]进程管理其中的SQL Server进程占用内存远远大于SQL server内部统计出来的内存...
  • [ABP实战开源项目]---ABP实时服务-通知系统.发布模式
  • [AutoSar]BSW_OS 02 Autosar OS_STACK
  • [bbk5179]第66集 第7章 - 数据库的维护 03
  • [bzoj2957]楼房重建
  • [hdu 3652] B-number
  • [HOW TO]如何在iPhone应用程序中发送邮件