1. 程式人生 > >Spring的Bean管理(XML方式)&屬性注入

Spring的Bean管理(XML方式)&屬性注入

1、Spring對Bean的例項化方式

Bean已經都交給Spring進行管理,Spring在建立這些類的時候,有三種方式

1.1 無參構造方法的方式(預設)

編寫類

public class Bean1{
	public void Bean1(){
		super();
		System.out.println("Bean1的無參方法執行了");
	}
}

編寫配置

<bean id="bean1" class="com.xu.spring.demo3.Bean1"/>

1.2 靜態工廠例項化的方式

編寫類

public class
Bean2Factory{ public static Bean2 createBean2(){ System.out.println("Bean2Factory中的方法執行了"); return new Bean2(); } }

編寫配置

<bean id="bean2" class="com.xu.spring.demo3.Bean2Factory" factory-method="createBean2"/>

1.3 例項工廠例項化的方式

編寫類

public class Bean3Factory{
	public static Bean3 createBean3
(){ System.out.println("Bean3的例項工廠執行了"); return new Bean3(); } }

編寫配置

<bean id="bean3Factory" class="com.xu.spring.demo3.Bean3Factory"/>
<bean id="bean3" factory-bean="bean3Factory" factory-method="createBean3"/>

2、Spring的屬性注入

2.1 構造方法的屬性注入

<bean id="car" class="com.xu.spring.demo4.Car"
>
<constructor-args name="name" value="寶馬"/> <constructor-args name="price" value="1000000"/> </bean>

2.2 set方法的屬性注入

2.2.1 set方法的普通型別屬性注入
<bean id="car2" class="com.xu.spring.demo4.Car2">
	<property name="name" value="寶馬"/>
	<property name="price" value="1000000"/>
</bean>
2.2.2 set方法設定物件型別的屬性注入
<bean id="employee" class="com.xu.spring.demo4.Employee">
	<!--value:設定普通型別的屬性 ref:設定其他類的id或者name-->
	<property name="name" value="小王"/>
	<property name="car2" ref="car2"/>
</bean>

2.3 p名稱空間的屬性注入(spring2.5以後)

  • 通過引用p名稱空間完成注入
    • 普通屬性 p:屬性名=“值”
    • 物件屬性 p:屬性名-ref=“值”
  • p名稱空間的引用p名稱空間的引用
  • 使用p名稱空間
<bean id="car2" class="com.xu.spring.demo4.Car2" p:name="QQ" p:price="200000">

<bean id="employee" class="com.xu.spring.demo4.Employee" p:name="小馬" p:car2-ref="car2">

2.4 SpEL的屬性注入(Spring3.0以後)

SpEL:Spring Expression Language,Spring的表示式語言。

  • 語法
    • #{SpEL}
<bean id="carInfo" class="com.xu.spring.demo4.carInfo"></bean>

<bean id="car2" class="com.xu.spring.demo4.car">
	<property name="name" value="#{carInfo.name}"></property>
	<property name="price" value="#{carInfo.calculatorPrice()}"></property>
</bean>


<bean id="empleey" class="com.xu.spring.demo4.Empleey">
	<property name="name" value="#{'小徐'}"></property>
	<property name="car2" value="#{car2}"></property>
</bean>

2.5 集合型別屬性注入(瞭解)

 <!-- Spring的集合屬性的注入============================ -->
    <!-- 注入陣列型別 -->
    <bean id="collectionBean" class="com.itheima.spring.demo5.CollectionBean">
        <!-- 陣列型別 -->
        <property name="arrs">
            <list>
                <value>王東</value>
                <value>趙洪</value>
                <value>李冠希</value>
            </list>
        </property>
       
        <!-- 注入list集合 -->
        <property name="list">
            <list>
                <value>李兵</value>
                <value>趙如何</value>
                <value>鄧鳳</value>
            </list>
        </property>
       
        <!-- 注入set集合 -->
        <property name="set">
            <set>
                <value>aaa</value>
                <value>bbb</value>
                <value>ccc</value>
            </set>
        </property>
       
        <!-- 注入Map集合 -->
        <property name="map">
            <map>
                <entry key="aaa" value="111"/>
                <entry key="bbb" value="222"/>
                <entry key="ccc" value="333"/>
            </map>
        </property>
    </bean>