<?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:p="http://www.springframework.org/schema/p"
xmlns:util="http://www.springframework.org/schema/util"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-4.0.xsd">
<!-- 配置一个Monster bean -->
<bean id="monster01" class="com.kcl.spring.bean.Monster" >
<property name="id" value="100"/>
<property name="nickname" value="牛魔王"/>
<property name="skill" value="芭蕉扇"/>
</bean>
<!-- 希望创建一个monster对象,他的值和monster01一样
注意:如果我们希望某一个bean是只用于继承,本身不能实例化,则将这个bean设置为 abstract = true
-->
<bean id="monster10" class="com.kcl.spring.bean.Monster" parent="monster01"></bean>
<!--通过构造器来配置bean对象
方式一: 通过index 来指定参数位置
-->
<bean id="monster02" class="com.kcl.spring.bean.Monster">
<constructor-arg index="0" value="200"/>
<constructor-arg index="1" value="白骨精"/>
<constructor-arg index="2" value="吃人"/>
</bean>
<!--通过构造器来配置bean对象
方式2: 用制定类型来指定参数位置
-->
<bean id="monster03" class="com.kcl.spring.bean.Monster">
<constructor-arg type="Integer" value="300"/>
<constructor-arg type="String" value="红孩儿"/>
<constructor-arg type="String" value="三位真火"/>
</bean>
<!--
使用p名称控件来配置bean
1.引入p名称空间标签
2.
-->
<bean id="monster04" class="com.kcl.spring.bean.Monster"
p:id="400"
p:nickname="蜘蛛精"
p:skill="吐口水"
/>
<!-- 配置一个master bean对象 -->
<bean id="master01" class="com.kcl.spring.bean.Master">
<property name="name" value="太上老君"/>
<property name="monster" ref="monster01"/>
</bean>
<!-- 配置一个master bean对象 含有内部bean -->
<bean id="master02" class="com.kcl.spring.bean.Master">
<property name="name" value="地藏王"/>
<property name="monster" ref="monster04"/>
<property name="monster2">
<bean class="com.kcl.spring.bean.Monster">
<property name="id" value="500"/>
<property name="nickname" value="谛听"/>
<property name="skill" value="顺风耳"/>
</bean>
</property>
</bean>
<!-- 配置一个master bean对象 还有list集合属性 -->
<bean id="master03" class="com.kcl.spring.bean.Master">
<property name="name" value="地藏王"/>
<property name="monster" ref="monster02"/>
<property name="monster2" ref="monster01"/>
<property name="monsterList">
<list>
<ref bean="monster03"/>
<ref bean="monster04"/>
</list>
</property>
</bean>
<!-- 配置一个master bean对象 还有map集合属性 -->
<bean id="master04" class="com.kcl.spring.bean.Master">
<property name="name" value="~地藏王~"/>
<property name="monster" ref="monster02"/>
<property name="monster2" ref="monster01"/>
<property name="map">
<map>
<entry>
<key>
<value>monstermap01</value>
</key>
<ref bean="monster03"/>
</entry>
<entry>
<key>
<value>monstermap02</value>
</key>
<ref bean="monster04"/>
</entry>
</map>
</property>
</bean>
<!-- 配置一个master bean对象 还有properties集合属性 -->
<bean id="master05" class="com.kcl.spring.bean.Master">
<property name="name" value="~地藏王~"/>
<property name="monster" ref="monster02"/>
<property name="monster2" ref="monster01"/>
<property name="ps">
<props>
<prop key="prokey01">牛魔王</prop>
<prop key="prokey02">白骨精</prop>
</props>
</property>
</bean>
<!-- 创建list集合 -->
<util:list id="myList">
<value>list值1</value>
<value>list值2</value>
</util:list>
<!-- 级联属性赋值 -->
<!-- 联系而已,与内部bean有区别,内部bean是创建一个新的ban,只供自己使用 -->
<bean id="myDog" class="com.kcl.spring.bean.Dog"/>
<bean id="myBoy" class="com.kcl.spring.bean.Boy">
<property name="name" value="tom"/>
<property name="dog" ref="myDog"/>
<!-- 级联赋值 -->
<property name="dog.name" value="哈巴狗"/>
</bean>
<!-- 通过静态工厂获取bean -->
<bean id="myMonster" class= "com.kcl.spring.bean.MyStaticFactory" factory-method="getMonster">
<constructor-arg value="monsterkey02"/>
</bean>
<!-- 通过实例工厂获取bean对象 -->
<bean id="myInstanceFactory" class="com.kcl.spring.bean.MyInstanceFactory"/>
<!-- 通过myInstanceFactory获取 -->
<bean id="myMonster2" factory-bean="myInstanceFactory" factory-method="getMonster">
<constructor-arg value="monsterkey01"/>
</bean>
<!-- 使用factoryBean获取设置bean -->
<bean id="myMonster3" class="com.kcl.spring.bean.MyFactoryBean">
<property name="keyVal" value="monsterkey02"/>
</bean>
<!-- 创建一个猫的bean -->
<bean id="myCat01" scope="prototype" class="com.kcl.spring.bean.Cat">
</bean>
<!-- 配置自己的后置处理器 -->
<bean id="myBeanPostProcessor" class="com.kcl.spring.bean.MyBeanPostProcessor">
</bean>
<!-- 配置一个有生命周期的bean对象 -->
<bean id="myCat02" class="com.kcl.spring.bean.Cat"
destroy-method="destory"
init-method="init">
<property name="name" value="~糖宝~"/>
</bean>
</beans>