浏览 2090 次
锁定老帖子 主题:Spring的 Bean 封装机制
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2009-02-23
最后修改:2009-02-23
1.Bean Wrapper Bean Wrapper及Bean Factory的底层是通过java.lang.reflect机制来实现的 Class cla = Class.forName("com.tianye.Student"); Object obj = (Object)cla.newInstance(); Method method = cla.getMethod("setName",new Class[]{String.class}); method.invoke(obj,new Object[]{"TianYe"}); 利用Bean Wrapper来操作一个Bean实例: public static void TestBeanWrapper(){ try{ Object obj = Class.forName("com.tianye.Student").newInstance(); BeanWrapper bw = new BeanWrapperImpl(obj); bw.setPropertyValue("name","TianYe"); System.out.println(bw.getPropertyValue("name")); }catch(Exception e){ e.printStackTrace(); } } BeanWrapper 需要逐个的对属性设置值,操作起来比较繁琐,而且只是针对单个Bean进行的操作,BeanWrapper不是很常用,在此基础上出现了BeanFactory 2.BeanFactory BeanFactory对Bean的操作是通过配置文件来完成的,BeanFactory在配置文件中可以配置的项目: (1) Bean属性值及依赖关系 (2) Bean的创建模式(是否为singleton) (3) Bean的初始化及销毁方法 (4) Bean的依赖关系 <bean>标签中的属性及用法 id: 是Bean在BeanFactory中的一个唯一的标识,在代码中以此作为索引名称来获取Bean实例的 class:类名(类的路径---包名.类名) singleton: singleton="false"的时候表示该类不是单例Bean是多利Bean,多线程访问的时候,会获取到多个不同的Bean实例 singleton="true"的时候表示该类是单例Bean,多线程访问的时候只可以获取到一个Bean实例 lazy-init:为"true"的时候表示在spring容器启动的时候不用加载该Bean,只要第一次获取Bean实例的时候才加载该Bean, 为"false"的时候则是在spring容器启动的时候就被加载,利用该属性可以优化spring容器的启动速度 该属性只针对于单例Bean起作用,当singleton="false"的时候系统抛出异常 init-method:初始化方法,在BeanFactory创建Bean实例后执行该方法 destroy-method:销毁方法,在Bean销毁的时候调用,一般用于资源释放 <property>标签中的属性及用法 <value>节点:用于指定一个属性的值,BeanFactory会自动进行类型匹配 <ref>节点:指定了属性对BeanFactory中其他Bean的引用关系(即一个Bean中的属性或方法中的参数是另一个Bean的对象或是Interface对象),由接口的实现类来完成注入 <null>节点:当Bean中的属性值要设为 null 的时候,就需要使用到<null/>子节点 利用BeanFactory来获取Bean实例: InputStream is = new FilleInputStream("bean.xml"); XmlBeanFactory xbf = new XmlBeanFactory(is); IHello ihello = (IHello)xbf.getBean("hello"); BeanFactory实现了对多个Bean的管理 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |