需要 jar 包
commons-logging-1.1.1.jar
spring-beans-4.0.2.RELEASE.jar
spring-context-4.0.2.RELEASE.jar
spring-core-4.0.2.RELEASE.jar
spring-expression-4.0.2.RELEASE.jar
applicationContext.xml
<?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.xsd">
<!--
配置 bean
class: bean 的全类名, 通过反射的方法在 IOC 容器中创建 Bean, 使用必须要求有无参构造函数
id: 标识容器中的 bean, id 唯一
-->
<bean id="hellospring" class="com.anqi.hello.HelloSpring">
<property name="name" value="anqi"></property>
</bean>
<!-- 通过构造方法来配置 bean 的属性 -->
<bean id="car" class="com.anqi.hello.Car">
<constructor-arg value="Audi" index="0"></constructor-arg>
<constructor-arg value="Shanghai" index="1"></constructor-arg>
<constructor-arg value="300000" index="2"></constructor-arg>
</bean>
<!-- 使用构造器注入属性值可以指定参数的位置和参数的类型! 以区分重载的构造器! -->
<bean id="car2" class="com.anqi.hello.Car">
<constructor-arg value="Baoma" index="0"></constructor-arg>
<constructor-arg value="Shanghai" index="1"></constructor-arg>
<constructor-arg value="240" type="int"></constructor-arg>
</bean>
<bean id="car3" class="com.anqi.hello.Car">
<constructor-arg value="Baoma3" index="0"></constructor-arg>
<!-- 如果字面值包含特殊字符 可以用<![CDATA[]]> 包裹起来 -->
<!-- 字面值就是基本数据类型及其包装类, 以及 String 类 -->
<!-- 属性值也可以使用 value 节点来进行配置 -->
<constructor-arg index="1">
<value><![CDATA[<shanghai3]]></value>
</constructor-arg>
<constructor-arg value="2403" type="int"></constructor-arg>
</bean>
<bean id = "person" class = "com.anqi.hello.Person">
<property name="name" value="Anqi"></property>
<property name="age">
<value>25</value>
</property>
<!-- <property name="car" ref="car2"></property> 与下面代码效果一致-->
<!--
<property name="car">
<ref bean="car2"/>
</property>
-->
<!-- 内部 bean 不能被外部引用, 只能在内部使用-->
<property name="car">
<bean class="com.anqi.hello.Car">
<constructor-arg value="fute"></constructor-arg>
<constructor-arg value="Beijing"></constructor-arg>
<constructor-arg value="28000" type="double"></constructor-arg>
</bean>
</property>
</bean>
<bean id="person2" class="com.anqi.hello.Person">
<constructor-arg value="LiChen"></constructor-arg>
<constructor-arg value="18"></constructor-arg>
<!-- 测试赋值 NULL 值 -->
<!--<constructor-arg><null/></constructor-arg> -->
<constructor-arg name="car" ref="car2"></constructor-arg>
<!-- 为级联属性赋值,必须有对应的 setter 方法 -->
<!-- 注意 : 属性需要先初始化后才可以为级联属性赋值, 否则会有异常 -->
<property name="car.maxSpeed" value="220"></property>
</bean>
<bean id="person3" class="com.anqi.hello.collections.Person">
<property name="name" value="Angels">