`
- 浏览:
220460 次
- 性别:
- 来自:
大连
-
java 代码
-
- package com.viwo.bean.factory;
-
- import java.util.HashMap;
- import java.util.Iterator;
- import java.util.Map;
-
- import org.apache.commons.beanutils.BeanUtils;
- import org.apache.commons.digester.Digester;
- import org.apache.log4j.Logger;
-
- import com.viwo.bean.config.ConfigBean;
- import com.viwo.bean.interceptor.InterceptorProxyFactory;
- import com.viwo.sqlmap.config.SqlMapConfig;
-
-
-
-
-
-
-
- public class BeanFactory {
-
- private final static Logger logger = Logger.getLogger(SqlMapConfig.class);
- private Map configBeanMap = new HashMap();
- private static Map beanFactoryMap = new HashMap();
-
-
-
-
-
-
-
- public static synchronized Object getBean(String beanId)
- {
- logger.info("[viwo]-->[enter getBean]");
- BeanFactory beanFactory = getBeanFactory();
- Map cfgMap = beanFactory.getConfigBeanMap();
- ConfigBean cfgBean = (ConfigBean)cfgMap.get(beanId);
- if(cfgBean == null)
- {
-
- return null;
- }
- String transaction = cfgBean.getTransaction();
- Object beanObject = null;
- try
- {
- beanObject = Class.forName(cfgBean.getType()).newInstance();
- }
- catch (Exception e)
- {
- e.printStackTrace();
- }
-
- Iterator itProperty = cfgBean.getPropertyMap().keySet().iterator();
- Iterator itRef = cfgBean.getRefMap().keySet().iterator();
-
- while(itProperty.hasNext())
- {
- String propertyName = itProperty.next().toString();
- String propertyValue = cfgBean.getPropertyMap().get(propertyName).toString();
- try
- {
- BeanUtils.setProperty(beanObject, propertyName, propertyValue);
- }
- catch (Exception e)
- {
- e.printStackTrace();
- }
- }
-
- while(itRef.hasNext())
- {
- String refName = itRef.next().toString();
- String refValue = cfgBean.getRefMap().get(refName).toString();
- Object refObject = BeanFactory.getBean(refValue);
- try
- {
- BeanUtils.setProperty(beanObject, refName, refObject);
- }
- catch (Exception e)
- {
- e.printStackTrace();
- }
- }
-
- if(transaction!=null&&!transaction.equals(""))
- {
- String[] trans = transaction.split(",");
- beanObject = InterceptorProxyFactory.getInterceptorProxyedObject(beanObject,trans);
- }
- return beanObject;
- }
-
-
-
-
-
-
-
-
- private static synchronized BeanFactory getBeanFactory()
- {
- BeanFactory beanFactory = null;
- String path = "bean-config.xml";
- if(beanFactoryMap.get(path)==null)
- {
- Digester digester = new Digester();
- digester.setValidating(false);
- digester.addObjectCreate("beans", "com.viwo.bean.factory.BeanFactory");
-
- digester.addObjectCreate("beans/bean", "com.viwo.bean.config.ConfigBean");
-
- digester.addSetProperties("beans/bean");
-
- digester.addCallMethod("beans/bean/property", "setProperty", 2);
- digester.addCallParam("beans/bean/property", 0, "name");
- digester.addCallParam("beans/bean/property", 1, "value");
-
- digester.addCallMethod("beans/bean/ref", "setRef", 2);
- digester.addCallParam("beans/bean/ref", 0, "name");
- digester.addCallParam("beans/bean/ref", 1, "value");
-
- digester.addSetNext("beans/bean", "addConfigBean", "com.viwo.bean.config.ConfigBean");
-
- try
- {
- beanFactory = (BeanFactory)digester.parse(Thread.currentThread().getContextClassLoader().getResource("/"+path).getFile());
- beanFactoryMap.put(path, beanFactory);
- }
- catch (Exception e)
- {
- System.out.println(e.getMessage());
- }
- }
- else
- {
- beanFactory = (BeanFactory)beanFactoryMap.get(path);
- }
- return beanFactory;
- }
- public void addConfigBean(ConfigBean configBean)
- {
- configBeanMap.put(configBean.getId(), configBean);
- }
- public Map getConfigBeanMap()
- {
- return configBeanMap;
- }
-
- }
分享到:
Global site tag (gtag.js) - Google Analytics
相关推荐
NULL 博文链接:https://zhengshuo.iteye.com/blog/573192
一个简单的IOC容器的java实现,一个简单的IOC容器的java实现
自己实现的简易的模拟Spring的IoC容器,实现注解自动装配
java代码实现简易版IOC容器!.docx
简单的模仿Spring Ioc 配置文件属性只支持id class name ref,其他的没做解析
自主实现的简易Spring框架,通过注解实现IoC容器和AOP。
在我们使用Spring.NET框架的时候,首先需要实例化Spring.NET容器, 然后调用IoC容器IObjectFactory接口中GetObject方法获取容器中的对象。通过这一点就可以告诉我们制作IoC容器需要写一个获取XML文件内容的方法和申明...
手写简单实现ioc、aop事务demo,实现事务回滚,使用到了,工厂模式,动态代理
博文链接:https://flyinglife.iteye.com/blog/222772
本工程模仿了简易的springMVC的实现, 包含了controller、service、requestParam、autowired、requestMapping注解类的创建 IOC容器的创建及组装原理实现 简易的request请求
ThinkAndroid是一个免费的开源的、简易的、遵循Apache2开源协议发布的Android开发框架,其开发宗旨是简单、快速的进行 Android应用程序的开发,包含Android mvc、简易sqlite orm、ioc模块、封装Android httpclitent...
ThinkAndroid是一个免费的开源的、简易的、遵循Apache2开源协议发布的Android开发框架,其开发宗旨是简单、快速的进行 Android应用程序的开发,包含Android mvc、简易sqlite orm、ioc模块、封装Android httpclitent...
是一个android的orm和ioc框架。同时封装了android中的Bitmap与Http操作的框架,使其更加简单易用;KJFrameForAndroid的设计思想是通过封装Android原生SDK中复杂的复杂操作而达到简化Android应用级开发,最终实现快速...
ThinkAndroid是一个免费的开源的、简易的、遵循Apache2开源协议发布的Android开发框架,其开发宗旨是简单、快速的进行 Android应用程序的开发,包含Android mvc、简易sqlite orm、ioc模块、封装Android httpclitent...
ThinkAndroid是一个免费的开源的、简易的、遵循Apache2开源协议发布的Android开发框架,其开发宗旨是简单、快速的进行 Android应用程序的开发,包含Android mvc、简易sqlite orm、ioc模块、封装Android httpclitent...
其开发宗旨是简单、快速的进行 Android应用程序的开发,包含Android mvc、简易sqlite orm、ioc模块、封装Android httpcliten… 开发工具在软件开发生命周期中扮演着至关重要的角色,它们旨在简化和加速从概念设计...
简易但不简单,其设计和实现借鉴业界众多的优秀框架,如struts,spring mvc,ror,grails等, 力图为Java开发人员提供一套高效的开发框架。 基于java技术开发,继承其强大、稳定、安全、高效、跨平台等多方面的优点 ...
Generic String Hash Set ZSet List Stream HyperLogLog PubSub Lua tran pipelining ...为每个数据类型增加对应的模型返回 取消字典的返回(zset) ...增加 简易版ioc实现,方便 使用者替换实现(暂时不考虑)