Spring Bean对象

1. 创建Bean对象的三种方式

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd">

    <!--id只表示一个可以被获得的索引,可以是任意的-->

    <!--采用无参构造的方法创建对象-->
    <bean id="FindUserDao" class="com.c21w.dao.impl.FindUserDaoImpl"></bean>

    <!--通过某个类中的某个 非静态 方法创建对象-->
    <!--先写获取类或接口的bean标签,然后再被获取类或接口的bean标签添加factory-bean(获取类的id)和factory-method(获取类中获取被获取类的方法)-->
    <bean id="Factory" class="com.c21w.factory.FactoryImpl"></bean>
    <bean id="FindUserDao" factory-bean="Factory" factory-method="getFindUserDao"></bean>

    <!--通过某个类中的某个 静态 方法创建对象-->
    <!--class指获取的类或接口,factory-method指获取被获取类的静态方法-->
    <bean id="FindUserDao" class="com.c21w.factory.FactoryImpl" factory-method="getFindUserDao"></bean>
</beans>

2. Bean的作用范围

<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd">

    <!--bean的作用范围的调整
        bean标签的scope属性:
            取值:
                singleton: 单例的
                prototype: 多例的
                request: 作用于web应用的请求范围
                session: 作用于web应用的会话范围
    -->
    <bean id="XX" class="xx" scope="singleton"></bean>
</beans>

3. Bean的生命周期

<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd">

    <!--bean的生命周期
        单例对象:
            随容器创建而创建,随容器销毁而销毁
        多例对象:
            出生:使用对象时由Spring创建
            死亡:被java的垃圾回收器回收时
    -->
</beans>

4. 有参构造

<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd">

    <!--在bean标签内部添加
            <constructor-arg></constructor-arg>
        属性:
            name:构造函数中的参数名
            value:用于提供基本类型数据和String类型的数据
            ref:提供其他的bean对象数据(通过id引用)
    -->
    <bean id="XX" class="xx">
        <constructor-arg name="XX" value="pp"></constructor-arg>
        <constructor-arg name="YY" ref="qq"></constructor-arg>
    </bean>
    <bean id="qq" class="QAQ"></bean>
</beans>

5. set方法注入

<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd">

    <!--在bean标签内部添加
            <property></property>
        属性:
            name:setter中的参数名
            value:用于提供基本类型数据和String类型的数据
            ref:提供其他的bean对象数据(通过id引用)
    -->
    <bean id="XX" class="xx">
        <property name="XX" value="pp"></property>
        <property name="YY" ref="qq"></property>
    </bean>
    <bean id="qq" class="QAQ"></bean>
</beans>

6. 复杂类型注入(集合..)

<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd">

    <!--在bean标签内部添加
            <property></property>
        属性:
            name:setter中的参数名
           
            在property内部添加对用的集合(set/array/list/map...)
    -->
    <bean id="XX" class="xx">
        <property name="XX">
            <set>
                  <value>AAA</value>
                  <value>BBB</value>
                  <value>CCC</value>
            </set>
        </property>
        <property>
            <map>
                <entry key="XX">
                    <value>yy</value>
                </entry>
            </map>
        </property>
    </bean>
</beans>
posted @ 2020-08-25 13:55  一只小白的进修路  阅读(187)  评论(0)    收藏  举报