快速业务通道

从spring的IOC说起(二)——spring的Bean的基础配置 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-16
t;

注意到上面的配置中我们使用了ref关键字,这个是表示引用配置文件中的ID 为bean_date的对象,另外对于类型,spring会做恰当的转换,比如将345转换成 数字等。当然,这样对简单的构造来说不会有什么问题,如果情况比较复杂的话 ,那么一般建议使用序号来标定,如下:

<!-- 使用二个参数的构造 --> <bean id="bean_test" class="cn.qtone.test.HelloWorld" scope="prototype">    <constructor-arg index="0"ref="bean_date"></constructor- arg>    <constructor-arg index="1"><value>345</value></constructor- arg> </bean>

这样,使用index属性表示该参数所在位置了后,无论是spring构造起来,还 是我们查看都会很方便。当然,spring也提供了自动查找,也就是依赖查找的功 能,但是这个我觉得大家还是少用,因为这样会使整个配置文件看起来非常的不 直观,而且不清晰,说不定过了一段时间再去看的时候就不知道是什么意思了, 在正式应用项目中,还是将各个bean的关系进行组织和编写清楚为好。

上面所说的都是构造来实例化一个bean,但有时候我们都会使用工厂模式来 获取bean。对于工厂模式,我们一般也使用静态工厂模式和实例工厂模式,这两 个在spring中配置也是不太一样的。对于静态工厂模式来实例化bean的,我们的 配置如下:

<bean id="bean_string" class="cn.qtone.test.TestFactory" factory-method="getBean"/>

当然,我们也可以为静态工厂模式的bean来使用构造参数,这个就不说了。 我们上面的bean配置对应的实际代码就应该是:

…… public static Object getBean() {    return "hello world"; } ……

那么spring在实例化ID为bean_string的bean时,就会使用TestFactory的 getBean()方法来获取,而且TestFactory是没有被实例化的,即是使用静态方法 来获取的。对于实例工厂模式的话,我们的配置和上面就稍微有点不一样了,那 我们就应该配置两个bean, 一个是实例的工厂bean,还一个就是我们要获取的 bean的配置了,如下:

<bean id="bean_factory" class="cn.qtone.test.TestBeanFactory"/>

<bean id="bean_helloWorld" factory-bean="bean_factory" factory-method="getHello"/>

上面的配置中,spring容器将首先实例化一个TestBeanFactory,然后再根据 该类的方法getHello来获取一个bean的实例,我们这里以HelloWorld对象为例, 对应的代码就应该如下:

…… public HelloWorld getHello() {    return new HelloWorld(); } ……

从spring的IOC说起(二)——spring的Bean的基础配置(3)

时间:2011-06-21 j2ee.blog.sohu.com

注意到,我们这里的getHello方法并不是静态方法,而是实例方法,所以必 须先实例化TestBeanFactory后才能够调用。

上面说的都是如何去实例化一个bean,没有说到bean的属性注入。虽然我们 也可以通过构造的时候进行一次注入,但这样做不仅失去了灵活性,而且一长串 的构造参数看着也眼疼哈,呵呵。当然,有一种情况下,我们是应该使用构造注 入的,就是希望注入的对象不能够被外界修改时,我们这时候就必须使用构造注 入了。对于bean的属性注入,以HelloWorld为例,我们可以简单的配置如下:

<bean id="bean_test" class="cn.qtone.test.HelloWorld">    <property name="hello" value="你好!" />    <pro

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号