Spring的Bean管理(XML方式)&屬性注入
阿新 • • 發佈:2018-12-09
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名稱空間
<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>