<?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:util="http://www.springframework.org/schema/util"
xmlns:p="http://www.springframework.org/schema/p"
xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/utilhttp://www.springframework.org/schema/util/spring-util-4.0.xsd">
<!-- 配置一个 bean -->
<bean id="helloWorld" class="com.spring.helloworld.HelloWorld">
<!-- 为属性赋值 -->
<propertyname="user"value="Jerry"></property>
</bean>
<!-- 配置一个 bean -->
<bean id="helloWorld2" class="com.spring.helloworld.HelloWorld">
<!-- 为属性赋值 -->
<!-- 通过属性注入:通过 setter 方法注入属性值 -->
<propertyname="user"value="Tom"></property>
</bean>
<!-- 通过构造器注入属性值 -->
<bean id="helloWorld3" class="com.spring.helloworld.HelloWorld">
<!-- 要求:在 Bean 中必须有对应的构造器. -->
<constructor-argvalue="Mike"></constructor-arg>
</bean>
<!-- 若一个 bean有多个构造器, 如何通过构造器来为 bean 的属性赋值 -->
<!-- 可以根据 index和 value 进行更加精确的定位. (了解) -->
<bean id="car" class="com.spring.helloworld.Car">
<constructor-argvalue="KUGA"index="1"></constructor-arg>
<constructor-argvalue="ChangAnFord"index="0"></constructor-arg>
<constructor-argvalue="250000"type="float"></constructor-arg>
</bean>
<bean id="car2" class="com.spring.helloworld.Car">
<constructor-argvalue="ChangAnMazda"></constructor-arg>
<!-- 若字面值中包含特殊字符,则可以使用 DCDATA来进行赋值. (了解) -->
<constructor-arg>
<value><![CDATA[<ATARZA>]]></value>
</constructor-arg>
<constructor-argvalue="180"type="int"></constructor-arg>
</bean>
<!-- 配置 bean -->
<bean id="dao5" class="com.spring.ref.Dao"></bean>
<bean id="service" class="com.spring.ref.Service">
<!-- 通过ref 属性值指定当前属性指向哪一个 bean! -->
<propertyname="dao"ref="dao5"></property>
</bean>
<!-- 声明使用内部 bean -->
<bean id="service2" class="com.spring.ref.Service">
<propertyname="dao">
<!-- 内部 bean,类似于匿名内部类对象.不能被外部的 bean来引用, 也没有必要设置 id 属性 -->
<beanclass="com.spring.ref.Dao">
<propertyname="dataSource"value="c3p0"></property>
</bean>
</property>
</bean>
<bean id="action" class="com.spring.ref.Action">
<propertyname="service"ref="service2"></property>
<!-- 设置级联属性(了解) -->
<propertyname="service.dao.dataSource"value="DBCP2"></property>
</bean>
<bean id="dao2" class="com.spring.ref.Dao">
<!-- 为Dao 的 dataSource属性赋值为 null,若某一个 bean 的属性值不是 null, 使用时需要为其设置为 null(了解) -->
<propertyname="dataSource"><null/></property>
</bean>
<!-- 装配集合属性 -->
<bean id="user" class="com.spring.helloworld.User">
<propertyname="userName"value="Jack"></property>
<propertyname="cars">
<!-- 使用 list元素来装配集合属性 -->
<list>
<refbean="car"/>
<refbean="car2"/>
</list>
</property>
</bean>
<!-- 声明单例集合类型的 bean -->
<util:listid="cars">
<ref bean="car"/>
<ref bean="car2"/>
</util:list>
<bean id="user2" class="com.spring.helloworld.User">
<propertyname="userName"value="Rose"></property>
<!-- 引用外部声明的 list -->
<propertyname="cars"ref="cars"></property>
</bean>
<!-- 运用 P 为bean 属性赋值 -->
<bean id="user3" class="com.spring.helloworld.User"
p:cars-ref="cars"p:userName="Titannic"></bean>
<!-- bean 的配置能够继承吗 ?使用 parent 来完成继承 -->
<bean id="user4" parent="user"p:userName="Bob"></bean>
<bean id="user6" parent="user"p:userName="维多利亚"></bean>
<!-- 测试depents-on-->
<bean id="user5" parent="user"p:userName="Backham"depends-on="user6"></bean>
</beans>