知识大全 简单模拟spring的容器管理bean

Posted

篇首语:吾生也有涯,而知也无涯。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 简单模拟spring的容器管理bean相关的知识,希望对你有一定的参考价值。

package  spring;import java io IOException;import  URL;import java util ArrayList;import java util HashMap;import java util List;import java util Map;import  jdom Document;import  jdom Element;import  jdom JDOMException;import  jdom input SAXBuilder;import  jdom xpath XPath;import  vo BeanDefinition;/** * 简单模拟spring的ClassPathXmlApplicationContext spring容器管理bean *  * @author zdw *  */@SuppressWarnings( unchecked )public class MyApplicationContext    private List<BeanDefinition> list = new ArrayList<BeanDefinition>();    private Map<String  Object> sigletons = new HashMap<String  Object>();    public MyApplicationContext(String fileName)            this readXML(fileName);        try                    instanceBeans();                catch (Exception e)                    e printStackTrace();                /**     * 实例化所有bean     *      * @throws InstantiationException     * @throws IllegalAccessException     * @throws ClassNotFoundException     */    private void instanceBeans() throws InstantiationException             IllegalAccessException  ClassNotFoundException            for (BeanDefinition bean : list)                    if (null != bean getClassName() && bean getClassName() length() >  )                sigletons put(bean getId()  Class forName(bean getClassName())                         newInstance());                /**     * 读取xml配置     *      * @param fileName     */    public void readXML(String fileName)            SAXBuilder builder = new SAXBuilder();        URL url = this getClass() getClassLoader() getResource(fileName);        try                    Document doc = builder build(url);            XPath xpath = XPath newInstance( //ns:beans/ns:bean );            xpath addNamespace( ns                      );            List<Element> beans = xpath selectNodes(doc);            for (Element bean : beans)                            String id = bean getAttributeValue( id );                String className = bean getAttributeValue( class );                BeanDefinition beanDefinition = new BeanDefinition(id                         className);                list add(beanDefinition);                            catch (JDOMException e)                    e printStackTrace();                catch (IOException e)                    e printStackTrace();                /**     * 得到指定id的bean     *      * @param id     * @return     */    public Object getBean(String id)            return sigletons get(id);    

  测试

@Test    public void testMyUserService()            MyApplicationContext ctx = new MyApplicationContext( beans xml );        UserService us = (UserService) ctx getBean( userService );        us print();     cha138/Article/program/Java/ky/201311/28759

相关参考

知识大全 自然的访问spring容器中的bean

   Spring依赖其IOC特征轻松的管理著一堆非常有价值的bean这些bean在spring容器中的依赖关系都已注入好所以相互调用非常方便  但既然是有价值的bean

知识大全 使用SpringtUtil获取Spring IoC容器中的Bean

使用SpringtUtil获取SpringIoC容器中的Bean  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起

知识大全 Spring创建Bean的过程

Spring创建Bean的过程  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  beans包提供了

知识大全 详解Spring中bean的scope

详解Spring中bean的scope  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  如何使用s

知识大全 Spring获取Bean的几种方式

Spring获取Bean的几种方式  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  方法一在初始化

知识大全 Spring中bean的基本xml配置

Spring中bean的基本xml配置  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  在spri

知识大全 Spring强制向servlet中注入bean的方法

Spring强制向servlet中注入bean的方法  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

知识大全 Java中如何获取Spring中配置的bean

Java中如何获取Spring中配置的bean  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  一

知识大全 解析Java中如何获取Spring中配置的bean

解析Java中如何获取Spring中配置的bean  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!本

知识大全 spring中bean的注入方式的选择

  在spring中提供了三种可供选择的注入方式  提供set/get方法  构造函数  工厂方法的运用  大家对这三种方法的选择都是仁者见仁智者见智一下我是我支构造函数的理由  保证一些重要的属性在