2.工厂BeanFactory类,读取工厂配置文件的数据,创建Dao对象,Manager对象
2011-10-13 19:58
459 查看
package com.bjpowernode.drp.util; import java.util.HashMap; import java.util.Map; import org.dom4j.Document; import org.dom4j.DocumentException; import org.dom4j.Element; import org.dom4j.io.SAXReader; import com.bjpowernode.drp.basedata.dao.ItemDao; import com.bjpowernode.drp.basedata.manager.ItemManager; /** * 抽象工厂,主要创建两个系列的产品: * 1、Manager系列 * 2、Dao系列产品 * @author Administrator * */ public class BeanFactory { private static BeanFactory instance = new BeanFactory(); private final String beansConfigFile = "beans-config.xml"; //保存Service相关对象 private Map serviceMap = new HashMap(); //保存Dao相关对象 private Map daoMap = new HashMap(); private Document doc; private BeanFactory() { try { doc = new SAXReader().read(Thread.currentThread().getContextClassLoader().getResourceAsStream(beansConfigFile)); } catch (DocumentException e) { e.printStackTrace(); throw new RuntimeException(); } } public static BeanFactory getInstance() { return instance; } /** * 根据产品编号取得Service系列产品 * @param beanId * @return */ public synchronized Object getServiceObject(Class c){ //如果存在相关对象实例,返回 if (serviceMap.containsKey(c.getName())) { return serviceMap.get(c.getName()); } Element beanElt = (Element)doc.selectSingleNode("//service[@id=\"" + c.getName() + "\"]"); String className = beanElt.attributeValue("class"); Object service = null; try { service = Class.forName(className).newInstance(); //将创建好多的对象放到Map中 serviceMap.put(c.getName(), service); } catch (Exception e) { throw new RuntimeException(); } return service; } /** * 根据产品编号取得Service系列产品 * @param beanId * @return */ public synchronized Object getDaoObject(Class c){ //如果存在相关对象实例,返回 if (daoMap.containsKey(c.getName())) { return daoMap.get(c.getName()); } Element beanElt = (Element)doc.selectSingleNode("//dao[@id=\"" + c.getName() + "\"]"); String className = beanElt.attributeValue("class"); Object dao = null; try { dao = Class.forName(className).newInstance(); //将创建好多的对象放到Map中 daoMap.put(c.getName(), dao); } catch (Exception e) { throw new RuntimeException(); } return dao; } public static void main(String[] args) { //ItemManager itemManager = (ItemManager)BeanFactory.getInstance().getServiceObject("itemManager"); //System.out.println(itemManager); //ItemDao itemDao = (ItemDao)BeanFactory.getInstance().getDaoObject("com.bjpowernode.drp.basedata.dao.ItemDao"); ItemDao itemDao = (ItemDao)BeanFactory.getInstance().getDaoObject(ItemDao.class); System.out.println(itemDao); } }
相关文章推荐
- 1.工厂beans-config.xml工厂配置文件,此抽象工厂,主要创建两个系列的产品:Manager系列,Dao系列
- 自己写BeanFactory,实现读取配置文件,并根据发射创建对象。
- C#中通过读取配置文件动态创建泛型对象
- 编写一个文件,读取 src 下面day12包 下面的my.properties 文件,文件内容如下, className=day12.User 结合 IO、反射知识,完成 配置文件中对象的创建和方法调用。并编写方法,列举出 Student 类中所有的属性、
- 读取配置文件动态创建对象[C++]
- spring学习教程7-spring容器创建bean对象的方式以及如何处理多个spring配置文件
- 设计一个学生类,其中包含学号、姓名、成绩等数据成员,创建学生对象并且倒入到文件file.txt,然后由文件读取到另一个学生对象并输出,试编程实现。
- spring-01 spring的bean管理(使用配置文件方式创建对象 附代码)
- 经过修改的读取配置文件PROPERTIES的小工具,对象尽量创建一次
- 用dom4j读取配置文件来模拟spring的bean工厂
- 使用dom4j:读取spring配置文件,实例化bean对象并注入依赖对象
- C#中通过读取配置文件动态创建泛型对象
- 使用dom4j:读取spring配置文件,实例化bean对象并注入依赖对象
- Spring读取xml配置文件并加载bean对象
- Java中读取配置文件中的信息,并利用配置文件中的信息创建对象
- spring在配置文件中bean对象创建的三种方式
- Mybatis+mysql动态分页查询数据案例——配置映射文件(HouseDaoMapper.xml)
- 一种强行指定dll assembly读取其相应*.dll.config配置文件的方法(又名:如何创建.net 的DCOM)
- Eclipse下的Java工程用JavaProject对象获取配置信息(不用读取配置文件)
- Spark创建DataFrame和读取CSV数据文件