• spring学习笔记——BeanWrapper和BeanFactory类

    2004-10-15

    Tag:学习

    版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明
    http://shidu.blogbus.com/logs/443542.html

    内容大部分是转载,觉得不错,整理一下登在此处。

    BeanWrapper和BeanFactory是spring的核心,BeanWrapper实现了针对单个Bean的属性设定操作。而BeanFactory则是针对多个Bean的管理容器,根据给定的配置文件,BeanFactory从中读取类名、属性名/值,然后通过Reflection机制进行Bean加载和属性设定。

    BeanWrapper的主要功能是,由Spring根据配置文件,将其他对象的引用通过组件的提供的setter方法进行设定。
    1、如果借助Java的Reflection机制完成:
    Class cls = Class.forName("net.xiaxin.beans.User");
    Method mtd = cls.getMethod("setName",new Class[]{String.class});
    Object obj = (Object)cls.newInstance();
    mtd.invoke(obj,new Object[]{"Erica"});
    return obj;
    2、通过Spring BeanWrapper操作一个JavaBean:
    Object obj = Class.forName("net.xiaxin.beans.User").newInstance();
    BeanWrapper bw = new BeanWrapperImpl(obj);
    bw.setPropertyValue("name", "Erica");
    对比之前的代码,相信大家已经知道BeanWrapper的实现原理。
    诚然,通过这样的方式设定Java Bean属性实在繁琐,但它却提供了一个通用的属性设定机制,而这样的机制,也正是Spring依赖注入机制所依赖的基础。

    BeanFactory,顾名思义,负责创建并维护Bean实例。
    BeanFactory负责根据配置文件创建Bean实例,可以配置的项目有:
    1. Bean属性值及依赖关系(对其他Bean的引用)
    2. Bean创建模式(是否Singleton模式,即是否只针对指定类维持全局唯一的实例)
    3. Bean初始化和销毁方法
    4. Bean的依赖关系
    下面的代码演示了如何通过BeanFactory获取Bean实例:
    InputStream is = new FileInputStream("bean.xml");
    XmlBeanFactory factory = new XmlBeanFactory(is);
    Action action = (Action) factory.getBean("TheAction");


    收藏到:Del.icio.us