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的功能,我们必须转换操作的界面,就如上面的程序所示。
暂时介绍到这边,有任何值得介绍的定义档读取方式,将随时补充于此。
分享到:
相关推荐
赠送jar包:jodd-bean-5.0.13.jar; 赠送原API文档:jodd-bean-5.0.13-javadoc.jar; 赠送源代码:jodd-bean-5.0.13-sources.jar; 赠送Maven依赖信息文件:jodd-bean-5.0.13.pom; 包含翻译后的API文档:jodd-bean-...
sisu-inject-bean-1.4.2.jar
赠送jar包:jodd-bean-5.1.6.jar; 赠送原API文档:jodd-bean-5.1.6-javadoc.jar; 赠送源代码:jodd-bean-5.1.6-sources.jar; 赠送Maven依赖信息文件:jodd-bean-5.1.6.pom; 包含翻译后的API文档:jodd-bean-...
【框架源码篇 04】Spring源码手写篇-Bean定义配置化
springfox-bean-validators 2.9.2
springfox-bean-validators 2.9.0
commons-beanutils-bean-collections-1.7.0.jar
赠送jar包:jodd-bean-5.0.13.jar; 赠送原API文档:jodd-bean-5.0.13-javadoc.jar; 赠送源代码:jodd-bean-5.0.13-sources.jar; 赠送Maven依赖信息文件:jodd-bean-5.0.13.pom; 包含翻译后的API文档:jodd-bean-...
赠送jar包:jodd-bean-5.1.6.jar; 赠送原API文档:jodd-bean-5.1.6-javadoc.jar; 赠送源代码:jodd-bean-5.1.6-sources.jar; 赠送Maven依赖信息文件:jodd-bean-5.1.6.pom; 包含翻译后的API文档:jodd-bean-...
JAVA-BEANJAVA-BEAN
struts-bean标签 自已讲课用的,初稿 PPT
struts-bean.tld struts开发插件
go-beanstalk 是beanstalkd 的GO语言的一个客户端。beanstalkd是一个快速的、有各种用途的延迟队列 和定时任务的不同点: 定时任务以一定的周期或者在某个特定的时间运行。
免费资源struts-bean.tld,可以直接添加进项目,然后修改web.xml即可
struts-bean
commons-beanutils-bean-collections.jar commons-beanutils-bean-collections.jar
commons-beanutils-bean-collections-1.8.3.jar
commons-beanutils-bean-collections-1.8.0.jar
struts-bean-el