<?xml version="1.0" encoding="UTF-8"?>
<beans
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://www.springframework.org/schema/beans"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.2.xsd ">
<!--
使用该元素描述需要spring容器管理的对象
name:给被管理的对象起一个名字 根据名称获得该对象 名称可以重复 可以使用一些特殊字符
class:被管理对象的完整类名
id属性:与name属性一样 id名称不能重复且不能使用特殊字符
尽量使用name属性
factory-method:用于静态对象工厂 指定工厂的创建方法
factory-bean:用于实例对象工厂 指定该对象由哪个工厂(bean的name)创建
scope:作用范围属性
singleton(默认) 单例对象 被标示的对象在spring容器中只会创建一个实例 创建容器时会立即创建单例对象
prototype 多例原型 被标示的对象每次在获得时才会创建 每次创建都是新的对象
在整合struts时 actionBean必须配置为多例
request web环境下 被标示的对象与request的生命周期一致
session web环境下 被标示的对象与session生命周期一致
生命周期属性(可选)
init-method:配置一个方法作为生命周期初始化方法 spring会在对象创建之后立即调用
destory-method:配置一个方法作为生命周期的销毁方法 spring容器会在关闭并销毁容器中的所有对象之前调用
-->
<bean name="user" class="cn.a2490.domain.User" init-method="">
<!--
set方式注入(值类型注入) 为User对象中名为name的属性注入Tom作为值
-->
<property name="name" value="Tom"></property>
<!--
对象方式注入(引用类型注入) 即User对象中具有Car属性以及它的get/set方法
ref:引用bean
-->
<property name="car" ref="car"></property>
<!--
复杂类型array注入
如果array|list中只准备注入一个值(对象 直接使用value|ref)
-->
<property name="array" >
<array>
<value>tom</value>
<value>jerry</value>
<ref bean="car"/>
</array>
</property>
<!--
list类型注入
-->
<property name="list">
<list>
<value>tom</value>
<value>jerry</value>
<ref bean="car"/>
</list>
</property>
<!--
map类型注入
-->
<property name="list">
<map>
<entry key="" value=""></entry>
<entry key="" value-ref="car"></entry>
<entry key-ref="car" value=""></entry>
</map>
</property>
<!--
properties类型注入
-->
<property name="prop">
<props>
<prop key="name" >张三</prop>
</props>
</property>
</bean>
<bean name="user" class="cn.a2490.domain.User" >
<!--
构造函数注入 必须具有构造函数
index:标识该参数处于传入函数的第几个参数 用于区分具有多个构造且构造传入参数相同但传入顺序不同的情况 如0 1 2
type:用于标识该参数的类型 用于区分具有多个构造且构造传入参数名称相同顺序相同但传入参数的类型不同的情况 需写入完整类名
-->
<constructor-arg name="name" value="Tom" index=""></constructor-arg>
<!--
构造函数对象注入
ref:引用bean
-->
<constructor-arg name="car" ref="car"></constructor-arg>
</bean>
<bean name="car" class="cn.a2490.domain.Car" >
<property name="name" value="兰博基尼">
<property name="color" value="黄色">
</bean>
<!--
引入其他的配置文件 用于程序的分模块开发
-->
<import resource="cn.a2490.test.xxx.xml">
</beans>
p名称空间注入 (在使用p名称注入时 需要导入context约束)
<?xml version="1.0" encoding="UTF-8"?>
<!--
引用p名称空间
-->
<beans
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://www.springframework.org/schema/beans"
xmlns:p="http://www.springframework.org/schema/p"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.2.xsd ">
<!--
使用p:属性完成注入
值类型: p:属性名
对象类型: p:属性名-ref="bean名称"
-->
<bean name="car" class="cn.a2490.domain.car" p:name="兰博基尼" p:color="黄色"></bean>
<bean name="user" class="cn.a2490.domain.User" p:name="Tom" p:age="18" p:car-ref="car"></bean>
</bean>