<%@ page contentType="text/html; charset=gb2312"%> Spring中bean的基本xml配置
网站公告:   ◆北天JAVA技术网热情为java爱好者服务,本网内容包括JAVA(JSP、servlet、EJB、webservice、j2ee、javabean、应用服务器、JavaScript),数据库(MYSQL、SQL Server、Sybase、Oracle、DB2、数据库综合知识),设计研究(设计模式、Struts、Spring、Hibernate、设计框架、设计综合知识),WEB2.0新技术(主要介绍AJAX),以及各种技术的入门、实例、例子等等,欢迎各位多来坐坐!◆  诚邀各位JAVA爱好者加盟!◆  本网站内容丰富,更新快,保证每周20篇以上!  
加入收藏
设为首页
联系站长
承接项目
  相关资源:网站首页 | 免费培训学院 | 技术论坛 | JAVA聊天室 | 作家专栏 | 开发工具 | 认证考试 | 会员俱乐部
  JAVA技术初学者园地 | jsp与servlet | javascript | Java源代码 | EJB | web service | 应用服务器 | JAVA综合知识
  设计研究设计模式 | 设计框架 | Struts | Spring | Hibernate | 开源项目 | 面向对象设计 | 设计综合知识
  数 据 库MYSQL | SQL Server | Sybase | Oracle | DB2 | Informix | Access | 数据库综合知识
  其他资源:AJAX新技术 | 网站开发 | ERP软件 | OA办公软件 | 商业智能BI | 开发综合知识 | 承接项目 | 项目试用

 
 
Spring中bean的基本xml配置
     发布者: 发布时间:2006-12-30

    在spring容器内拼凑bean叫作装配。装配bean的时候,你是在告诉容器,需要哪些bean,以及容器如何使用依赖注入将它们配合在一起。
    理论上,bean装配可以从任何资源获得,包括属性文件,关系数据库等,但xml是最常见的spring 应用系统配置源。Spring中的几种容器都支持使用xml装配bean,包括:
    XmlBeanFactory ,
    ClassPathXmlApplicationContext ,
    FileSystemXmlApplicationContext ,
    XmlWebApplicationContext

    基本的xml配置包括如下几个方面:
    
    1.添加一个bean
    2.设置bean的属性
        2.1 手动设置
            2.1.1 通过Setter方法
            2.1.2 通过构造器
        2.2 自动设置
    其中bean的属性即为bean里的成员变量,这些成员变量值的获得可以通过setter方法,例如某个属性为name,则setter方法为setName(String name);或者通过构造器在类被实例化时初始化。Setter方法(例如setName方法)或者构造器的调用都可以通过在xml文件里进行配置,从而实现让spring容器来自动进行。

1.添加一个bean
    以下是一个例子:
    <bean
        id = “mybean”
        Class = “blog.spring.MyBean”
        Singleton = “false”
        init-method = “initMethod”
        destroy-method = “destroyMethod”
        autowire = “autowire type”
    />
    下面是对该标签里各个属性的解释:
    Id : 标识该bean的名称,通过factory.getBean(“id”)来获得实例。
    Class : 该bean的类路径。
    Singleton : 默认为true,即单实例模式,每次getBean(“id”)时获取的都是同
一个实例,如果设置为false,即原型模式,则每次获取的是新创建
的实例。
    Init-method : 在bean实例化后要调用的方法(bean里定义好的方法)。
    Destroy-method : bean从容器里删除之前要调用的方法。
    Autowire : 其属性要通过何种方法进行属性的自动装配。
    对于上述的各个属性,id和class是必要的,其他的则可以省略。例如如果设置了autowire的值,则表明需要自动装配,否则是手动装配。

2.通过Setter方法手动设置bean里的属性
    Bean里的属性通过<property>标签来标识。有以下几种情况:
    ● 简单类型属性
        <bean id = “mybean” class = “blog.spring.MyBean”>
            <property name = “name”>
                <value>springTest</value>
            </property>
        </bean>
    ● 引用其他bean
        <bean id = “mybean” class = “blog.spring.MyBean” />
        <bean id = “mybean1” class = “blog.spring.MyBean1”>
            <property name = “name”>
                <ref bean = “mybean” />
            </property>
        </bean>
也可以将<ref>改为
    <bean class = “..”>
这样叫做内部bean,缺点是无法在其他地方重用这个bean的实例。
    ● 装配集合
        共有以下几种集合的装配:
    ****装配List和数组****
        <property name = ”nameList”>
            <list>
                <value>something</value>
                <ref bean = “blog.spring.MyBean” />
                <value>otherThing</value>
            </list>
        </property>
    ****装配Set****
        <property name = ”nameList”>
            <set>
                <value>something</value>
                <ref bean = “blog.spring.MyBean” />
                <value>otherThing</value>
            </set>
        </property>
    ****装配Map****
        <property name = ”nameList”>
            <map>
                <entry key = “key1”>
                    <value>value1</value>
                </entry>
                <entry key = “key2”>
                    <ref bean = “mybean” />
                </entry>
            </map>
        </property>
    ****装配Properties****
        <property name = ”nameList”>
            <props>
                <prop key = “prop1”>value1</prop>
                <prop key = “prop2”>value2</prop>
            </props>
        </property>
    ● 设置null
        要将一个属性null,需要通过<null />标签,如果不设置,则属性为默认值(在实例化时)而不是null。
        <property name=”name”> <null /> </property>

3.通过构造器手动设置bean里的属性
    假设有如下一个bean:
    Public class MyBean {
        Public MyBean( String arg1, MyBean1 arg2, String arg3 )
    }
则可以在xml里这样配置该bean:
<bean id = “mybean” class = “blog.spring.MyBean”>
        <constructor-arg index = “1”>
            <value>springTest</value>
        <constructor-arg>
        <constructor-arg index = “0”>
            <ref bean = “mybean1” />
        <constructor-arg>
</bean>
其中的index是用来标识该参数在构造函数里的位置的,并从0开始。

4.让spring完成自动装配
    例如:
<bean
id = “mybean”
class = “blog.spring.MyBean”
autowire = “autowire type”
/>
下面是几种autowire type的说明:
● byname : 试图在容器中寻找和需要自动装配的属性名相同的bean或id,如果没有找到相应的bean,则这个属性未被装配上。
● byType : 试图在容器中寻找一个与需要自动装配的属性类型相同的bean或id,如果没有找到,则该属性未被装配上。
● constructor : 试图在容器中寻找与需要自动装配的bean的构造函数参数一致的一个或多个bean,如果没找到则抛出异常。
● autodetect : 首先尝试使用constructor来自动装配,然后再使用byType方式。
从上面可以看出,如果某个bean不手动设置autowire属性,则默认为手动装配。如果需要将所有bean都设置为自动装配时,可以通过在<beans>标签中设置default-autowire属性。<beans>标签是整个xml文档的根,在它下面就是一个个的<bean>。
其中default-autowire的值也有byName,byType,constructor,autodetect四种。
例如配置如下:
<beans default-autowire = “byName”>
    ...
</beans>

    自动装配可能带来不确定性问题。例如使用byType时可能同时发现两个相同的类型,则不知道该采用哪一个。所以可能混合采用自动和手动装配。例如,对某个bean设置为自动装配,而对其某个属性则手动明确的设置其值,例如:
<bean id = “mybean” class = “blog.spring.MyBean”
    Autowire = “byType”
>
    <property name = “name”>
        <ref bean = “myBean1”>
    </property>
</bean>
通过这样的配置,对mybean里的name属性进行手动装配,而对除name外的其他属性就进行自动装配。

(转载文章请保留出处:北天JAVA技术网(www.java114.com))
 
更多精彩文章:
JAVA规则开发篇
JAVA认证历年真题:SCJP考试真题和解析
JAVA基础:随机整数的生成
软考用书
2007年上半年计算机技术与软件专业技术资格(水平)考试 你准备好了吗?
“2007Java技术发展趋势与Java爱好者沙龙成立研讨会”取得圆满成功
 
最近评论:
        
冰封的往事!
wow power leveling,wow gold,WoW Gold,wow gold max(2036)
        
标 题:   
内 容:   
 
                                  
 
免责声明:该文章由网友发表,如果对您造成侵权,请联系站长

首页 - 承接项目 - 网站地图 - 联系我们 -
版权所有北天JAVA技术工作室 ICP证号:粤ICP备06079815号