记录spring框架学习:beanFactory的XML之旅

    1. beans作为xml配置文件的最顶层元素,包含0或者1个<description>和多个<bean>,<import>,<alias>

    他拥有以下相应的属性。

    default-lazy-init。其值可以指定为true / false,默认值为false。 用来标志是否对所有的<bean>进行延迟初始化

    default-autowire。可以取值为no,byName,byType,constructor以及autodetect。默认值为no,如果使用自动绑定的话,用来标志全体bean使用哪一种默认绑定方式。

    default-dependency-check。可以取值为none,objects,simple以及all,默认值为none,即不做依赖检查

    default-init-method。如果所管辖的<bean>按照某种规则,都有同样名称的初始化方法的话,可以在这里统一指定这个初始化方法名,而不用在每一个<bean>上都重复单独指定。

    default-destroy-method。与default-init-method相对应,如果所管辖的bean有按照某种规则使用了相同名称的对象销毁方法,可以通过这个属性统一指定。

    2.<description> <import>和<alias>

    <description>在文件中指定一些描述性的信息。

    <import>根据模块功能或者层次关系,将配置信息放到多个配置文件中。

    <alias>为某些bean起一些外号,通常是为了减少输入。

    这三个元素通常使用得较少,也不是必需的,也就不写太详细了。

    3.<bean>

    <bean id="AexceptionResolver" class="...... . myExceptionResolver">

    </bean>

    id属性:注册到容器的对象都需要一个唯一标志来将彼此区分。如人的身份证号。指定当前对象的beanName是什么。也可以指定在<alias>设置的别名。

    <bean id="AexceptionResolver" 

                name= ".../../xxx/AExceptionResolver, BExceptionResolver" 

                    class="...... . myExceptionResolver">

    </bean>

    name属性:与id属性相比,name属性更灵活,可以使用id不能使用的一些字符,比如/。而且可以通过逗号,空格或者冒号来分割指定多个name。name的作文跟使用<alias>为id指定多个别名基本相同。

    class属性:每个注册到容器的对象都需要通过<bean>元素的class属性指定其类型。

    4.注入方式

    (1)构造方法注入:<constructor-arg>标签

    

     <bean id="AexceptionResolver" class="...... . myExceptionResolver">

                <constructor-arg ref="123" />

    </bean>

       type属性:若构造方法注入时,属性可被多个参数映射时,比如 123  既符合int,又符合String时,则需要type参数来指定具体映射哪个参数。

        

     <bean id="AexceptionResolver" class="...... . myExceptionResolver">

                <constructor-arg ref="123" type="int" />

    </bean>

    这样就会映射int类型参数。

    index属性:若传入多个属性,则可以用index属性来指定对应哪个参数。

     

    <bean id="AexceptionResolver" class="...... . myExceptionResolver">

                <constructor-arg value="123" index="0" />

                <constructor-arg ref="CexceptionResolver" index="1" />

    </bean>

     (2)setter方法注入: <property>标签

    <bean id="AexceptionResolver" class="...... . myExceptionResolver">

                <property name="123"  />

                <property name="456"  />

    </bean>

    当然<constructor-arg>与<property>标签是可以同时使用的。

    <bean id="AexceptionResolver" class="...... . myExceptionResolver">

                <constructor-arg value="123" index="0" />

                <property name="456" ref="CExceptionResolver" />

    </bean>

    内嵌元素有<ref>,<value>,<bean>,<list>,<set>,<map>

    <ref>和<value>上面例子有,就不举例了。

    <bean>: 

    <bean id="AExceptionResolver" class="...... . myExceptionResolver">

                <constructor-arg  index="0" >

                        <bean class=".../BExceptionResolver" />

                </constructor-arg>

    </bean>


    <list>:

    <bean id="AExceptionResolver" class="...... . myExceptionResolver">

                <constructor-arg  index="0" >

                        <list>

                                <value>sth</value>

                                <ref bean="someBeanName" /> 

                                <bean class="..."/>

                        </list>

                </constructor-arg>

    </bean>


    <set>:

    <bean id="AExceptionResolver" class="...... . myExceptionResolver">

                <constructor-arg  index="0" >

                        <set>

                                <value>sth</value>

                                <ref bean="someBeanName" /> 

                                <bean class="..."/>

                                <list>...</list>

                        </set>

                </constructor-arg>

    </bean>


    <map>:    

    <bean id="AExceptionResolver" class="...... . myExceptionResolver">

                <constructor-arg  index="0" >

                        <map>

                                <entry key="strValueKey">

                                    <value>sth</value>

                                </entry>

                                <entry>

                                        <key>objectKey</key>

                                        <ref bean="someObject" />

                                </entry>                               

                        </map>

                </constructor-arg>

    </bean>

    

       

    

猜你喜欢

转载自blog.csdn.net/qq_40341361/article/details/79878283