`
gaoyuntao2005
  • 浏览: 312317 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

入门 06 - Bean定义档进阶读取

阅读更多


 BeanFactory可以接受InputStream作为建构函式的参数,也可以接受实作 org.springframework.core.io.Resource接口的对象作为参数,像是ClassPathResource、 FileSystemResource、InputStreamResource、ServletContextResource、 UrlResource,在不同的场合可以使用对应的类别,以ClassPathResource为例:

Resource resource = new ClassPathResource("bean.xml");

BeanFactory factory = new XmlBeanFactory(resource);

HelloBean hello = (HelloBean) factory.getBean("helloBean");

....


 在bean定义档中如果有多个bean的定义,而您想要一次取回所有的bean,则您可以使用 org.springframework.beans.factory.ListableBeanFactory,藉由其对应的方法取回所有对应的 bean对象,例如若bean定义档中的内容如下:

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE beans PUBLIC "-//SPRING/DTD BEAN/EN" "http://www.springframework.org/dtd/spring-beans.dtd">

<beans>

    <bean id="helloBeanOfJustin" class="onlyfun.caterpillar.HelloBean">

        <property name="helloWord"><value>Hello!Justin!</value></property>

    </bean>

    <bean id="helloBeanOfcaterpillar" class="onlyfun.caterpillar.HelloBean">

        <property name="helloWord"><value>Hello!caterpillar!</value></property>

    </bean>

</beans>


 则我们可以根据型态一次取回所有的bean对象,例如:

Resource resource = new ClassPathResource("bean.xml");

        ListableBeanFactory factory = new XmlBeanFactory(resource);

      

        Map helloBeans = factory.getBeansOfType(HelloBean.class, false, false);


 您可以看看API文件了解getBeansOfType()或其它ListableBeanFactory的方法使用方式。
  将所有的bean定义全部写在一个bean定义文件只对小型的程序可行,对于大型的应用程序来说,所需要的bean量是非常大的,我们不可能将之撰写在同一 个定义档中,之前的方法将一个定义档绑定至一个BeanFactory中,BeanFactory的创建需要耗费资源,这个方法显然不可行。
 我们可以使用org.springframework.beans.factory.xml.XmlBeanDefinitionReader来进行多 个定义档的加载,它需要一个实作 org.springframework.beans.factory.support.BeanDefinitionRegistry接口的对象作为建 构时的参数,例如 org.springframework.beans.factory.support.DefaultListableBeanFactory, XmlBeanDefinitionReader使用一个BeanDefinitionRegistry类型的对象来注册多个bean定义档,我们不用为 每个bean定义档创建一个BeanFactory。
 举个使用的实际例子:

BeanDefinitionRegistry reg = new DefaultListableBeanFactory();

XmlBeanDefinitionReader reader = new XmlBeanDefinitionReader(reg);

  

// 加载bean定义档  

reader.loadBeanDefinitions(new ClassPathResource("bean1.xml"));

reader.loadBeanDefinitions(new ClassPathResource("bean2.xml"));

....

 

// 取得Bean

BeanFactory bf = (BeanFactory) reg;

Object o = bf.getBean("helloBean");

....


 DefaultListableBeanFactory同时实作BeanDefinitionRegistry、BeanFactory、 ListableBeanFactory等接口,为了能使用BeanFactory的功能,我们必须转换操作的界面,就如上面的程序所示。
 暂时介绍到这边,有任何值得介绍的定义档读取方式,将随时补充于此。

分享到:
评论

相关推荐

    day06-10(FRAMEWORK进阶-V1.01)1

    - **Bean 容器的初始化**:通过读取配置文件来初始化 Bean 容器。 - **两大 map 对象**:beanDefinitionMap 存储 Bean 的定义,beanInstanceMap 存储 Bean 实例。 - **两大 bean 对象**:BeanDefinition 描述 Bean ...

    SS2 入门简单示例

    这个"SS2 入门简单示例"应该是一个帮助初学者理解这三个框架如何协同工作的教程。下面我们将详细探讨这三个框架以及它们在实际开发中的应用。 **Struts 2**: Struts 2是一个基于MVC(Model-View-Controller)设计...

    spring data jpa入门实例

    【Spring Data JPA 入门实例】 Spring Data JPA 是 Spring 框架的一个模块,它简化了数据库访问层(DAO)的开发,通过提供自动化的 Repository 实现,使得开发者无需编写大量的 CRUD(创建、读取、更新、删除)代码...

    spring 技术手册

    #### 六、Bean定义文件进阶读取 Spring支持多种方式定义Bean,除了传统的XML文件外,还可以使用注解、Java配置等方式。高级读取通常涉及如何使用不同的配置方式来管理复杂的Bean结构。 #### 七、Bean生命周期 ...

    基础框架使用手册.doc

    - **缓存机制**:包括一级缓存(内置)和二级缓存(可配置),有效提高读取性能。 #### 三、开发入门 - **工程导入与结构**:介绍了如何将项目导入到开发环境中,并给出了项目的基本结构布局。 - **框架基本使用...

    mybatis入门源码

    压缩包中的"chapter6_jsr303"可能指的是第六章关于JSR 303(Java Bean Validation)的内容。JSR 303是Java EE规范的一部分,用于验证Java对象的属性。在MyBatis中,如果需要对数据库操作的数据进行校验,可以结合JSR...

    springboot学习成果.zip

    在"springboot学习成果.zip"这个压缩包中,你将找到一系列关于SpringBoot的学习资源,涵盖从基础到进阶的多个关键知识点。下面,我将详细解释这些核心概念。 1. **增删改查**:在SpringBoot中,数据库操作通常借助...

    Spring.3.x企业应用开发实战(完整版).part2

    4.11.1 使用Java类提供Bean定义信息 4.11.2 使用基于Java类的配置信息启动Spring容器 4.12 不同配置方式比较 4.13 小结 第5章 Spring容器高级主题 5.1 Spring容器技术内幕 5.1.1 内部工作机制 5.1.2 BeanDefinition ...

    Spring3.x企业应用开发实战(完整版) part1

    4.11.1 使用Java类提供Bean定义信息 4.11.2 使用基于Java类的配置信息启动Spring容器 4.12 不同配置方式比较 4.13 小结 第5章 Spring容器高级主题 5.1 Spring容器技术内幕 5.1.1 内部工作机制 5.1.2 BeanDefinition ...

    JAVA培训总结XXXX1214.docx

    学员学习了配置Hibernate,实体类的定义,以及使用Session进行CRUD(创建、读取、更新、删除)操作。 十五、SPRING入门 Spring框架是Java企业级应用的基石,它提供了依赖注入、AOP(面向切面编程)、MVC等特性。...

    Hibernate & Spring

    - "Hibernate 02.pdf" 和 "hibernate 01.pdf" 可能分别包含了Hibernate的入门教程和进阶内容,比如配置、实体管理、查询方法等。 - "hibernate_reference.zip" 有可能是Hibernate的官方参考文档,详细介绍了所有API...

    spring+struts+hibernate自学宝典

    本自学宝典将深入讲解这三个框架的核心概念、配置和使用方法,帮助Java新手快速进阶。 Spring框架是Java后端开发中的核心框架,它提供了强大的依赖注入(DI)和面向切面编程(AOP)功能,降低了代码的耦合度,增强...

    DWR中文文档.pdf

    #### 一、DWR入门 **1.1 简介** DWR(Direct Web Remoting)是一种简化Ajax应用程序开发的技术。它通过提供一种简单的方式来调用服务器端的Java方法,从而使得客户端的JavaScript代码可以直接操作服务器端的Java...

Global site tag (gtag.js) - Google Analytics