Spring4学习笔记二:Bean相关

Posted ygj0930

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spring4学习笔记二:Bean相关相关的知识,希望对你有一定的参考价值。

 

一:Bean的配置形式

    基于XML配置:在src目录下创建 applicationContext.xml  文件,在其中进行配置。

    基于注解配置:在创建bean类时,通过注解来注入内容。(这个不好,因为注解也在代码中,而且过于分散)

 

二:Bean的寻找方式

    通过反射来创建bean:通过bean定义时的全类名,用反射机制来寻找bean元数据,创建对象。【因此:Bean类必须至少有一个无参构造函数

    id:容器中该bean对象的唯一标识,可以在容器中其他对象中根据id来调用该对象(例如:Factory对象创建时调用数据库连接池对象等),也可以在代码中用ApplicationContext对象.getBean(id)来获取某个bean对象。如果不指定对象,则默认使用类名作为id。

三:Bean对象的赋值——依赖注入的方式

    属性注入:在配置bean时,通过<property>标签配置,标签中name指定属性名,value指定属性值,原理是:调用Bean类中的setter方法进行属性赋值。一个标签赋值一个属性。

技术分享图片
<bean id="bean_id" class="www.ygj0930.bean.Bean">
        <property name="attr1" value="value1"></property>
        <property name="attr2" value="value2"></property>
        <property name="attr3" value="value3"></property>
        ......
</bean>
技术分享图片

 

    构造注入:在配置bean时,通过<constructor-arg>标签为构造函数配置参数值,标签中 value指定参数值,index指定是对应哪个参数,type说明该参数类型。一个标签赋值一个参数。

技术分享图片
<bean id="bean_id" class="www.ygj0930.bean.Bean">
        <constructor-arg value="val0" index="0" type="java.lang.XX"></constructor-arg>
        <constructor-arg value="val1" index="1" type="java.lang.XX"></constructor-arg>
        <constructor-arg value="val2" index="2" type="java.lang.XX"></constructor-arg>
        ........
    </bean>
技术分享图片

     

    属性值、参数值细节:
    1)如果属性值、参数值中包含特殊符号,则需要把属性值、参数值用C-Data括起来,即   <![CDATA[值]]>   形式来配置,都在特殊符号在xml中会被解释,从而报错。

    2)属性、参数是基本数据类型、封装数据类型:可以使用  value="字面量"  来注入。

    3)属性、参数是其他bean类型:

         3.1)引用外部bean:如果该属性、参数变量值是容器中已有bean,则使用  ref="引用的bean_id"  来注入。

         3.2)内部bean:如果属性、参数变量是当前bean中内部创建的一个新的bean,则使用<property>标签来配置,在标签之间在内嵌一个<bean>标签,并且以构造注入的方式来创建内部bean。

<bean id="外部bean">
        <property name="内部bean的属性名">
            <bean class="内部bean的全类名"> //内部bean,没有id,不能被外部其他bean引用
               <constructor-arg value="参数值" index="下标" type="参数类型"></constructor-arg>
               ......
            </bean>
        </property>
<property name="引用外部bean的属性名" ref="其他bean的ID"></property>
...... </bean>

     构造注入的内部bean参数值创建方法同上,标签换成constructor-arg。

 

四:级联属性配置

    如果一个bean2中引用了另一个bean1作为成员变量,那么我们可以在配置bean2时,通过bean2的成员变量来为引用的bean1赋值或者修改bean1的变量值。

 






以上是关于Spring4学习笔记二:Bean相关的主要内容,如果未能解决你的问题,请参考以下文章

Spring4基础 学习笔记 ---- Bean

Spring4.0学习笔记 —— 管理bean的生命周期

Spring4.0学习笔记 —— 通过FactoryBean配置Bean

Spring4.0学习笔记 —— 自动装配

Spring4学习笔记 - Bean的生命周期

Spring4学习笔记2-配置Bean