<!-- 属性值也可以使用 value 子节点进行配置,如果含有特殊字符使用<![CDATA[<>]]>包裹起来 -->
<bean id="car1" class="com.atguigu.spring.beans.Car">
<constructor-arg value="2000" type="double"></constructor-arg>
<constructor-arg type="java.lang.String">
<value><![CDATA[<shanghai^>]]></value>
</constructor-arg>
<constructor-arg value="100" type="int"></constructor-arg>
</bean>
<bean id="person" class="com.atguigu.spring.beans.Person">
<property name="name" value="Tom"></property>
<property name="age" value="20"></property>
<!-- 可以使用 property 的 ref 属性建立 bean 之间的引用关系 -->
<!--
1. <property name="car" ref="car1"></property>
2. 使用 ref 子节点配置
<property name="car">
<ref bean="car"/>
</property>
-->
<!-- 使用内部 bean, 不能在外部使用只能在内部使用 -->
<property name="car">
<bean class="com.atguigu.spring.beans.Car">
<constructor-arg value="1000" type="double"></constructor-arg>
<constructor-arg value="Ford"></constructor-arg>
<constructor-arg value="changan"></constructor-arg>
</bean>
</property>
</bean>
<bean id="person2" class="com.atguigu.spring.beans.Person">
<constructor-arg value="xiaoming"></constructor-arg>
<constructor-arg value="18"></constructor-arg>
<!--
测试 null
<constructor-arg> <null/> </constructor-arg>
-->
<!-- 为级联属性赋值 . 注意:属性需要先初始化然后才可以为级联属性赋值,否则产生异常,与struts2不同-->
<constructor-arg ref="car"></constructor-arg>
<property name="car.maxSpeed" value="20"></property>
</bean>
<!-- 测试如何配置集合属性 -->
<!-- list 集合 -->
<bean id="person3" class="com.atguigu.spring.beans.collection.Person">
<property name="name" value="Mark" ></property>
<property name="age" value="22"></property>
<!--
<property name="cars">
<list>
<ref bean="car"/>
<ref bean="car1"/>
</list>
</property>
-->
</bean>
<!-- map 集合 -->
<bean id="mapPerson" class="com.atguigu.spring.beans.collection.Person">
<property name="name" value="TT"></property>
<property name="age" value="23"></property>
<!-- 使用 map 节点 及 map 的 entry 子节点配置 Map 类型的成员变量 -->
<property name="cars1">
<map>
<entry key="AAA" value-ref="car"></entry>
<entry key="BBB" value-ref="car1"></entry>
</map>
</property>
</bean>
<!-- 配置 Properties 属性值 -->
<bean id="dataSource" class="com.atguigu.spring.beans.collection.DataSource">
<property name="properties">
<!-- 使用 props 和 prop 子节点来为 Properties 属性赋值 -->
<props>
<prop key="user">root</prop>
<prop key="password">1234</prop>
<prop key="jdbcUrl">jdbc:mysql:///test</prop>
<prop key="driverClass">com.mysql.jdbc.Driver</prop>
</props>
</property>
</bean>
<!-- 配置独立的集合 bean,以供多个 bean 进行引用,需要导入 util 命名空间 -->
<util:list id="cars">
<ref bean="car1"/>
<ref bean="car"/>
</util:list>
<bean id="person4" class="com.atguigu.spring.beans.collection.Person">
<property name="name" value="jack"></property>
<property name="age" value="11"></property>
<property name="cars1" ref="cars"></property>
</bean>
package com.atguigu.spring.beans.collection;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class Main {
public static void main(String[] args) {
//创建 spring 的 IOC容器对象
ApplicationContext ctx = new ClassPathXmlApplicationContext("one.xml");
//从 IOC 容器对象中获取 Bean 的实例
// Person person = (Person) ctx.getBean("person3");
// Person person2 = (Person) ctx.getBean("mapPerson");
// DataSource dataSource = ctx.getBean(DataSource.class);
Person person4 = (Person) ctx.getBean("person4");
//打印
//System.out.println(person);
// System.out.println(person2);
// System.out.println(dataSource);
System.out.println(person4);
}
}
package com.atguigu.spring.beans.collection;
import java.util.List;
import java.util.Map;
import com.atguigu.spring.beans.Car;
public class Person {
private String name;
private int age;
//private List<Car> cars;
private Map<String,Car> cars1;
public Map<String, Car> getCars1() {
return cars1;
}
public void setCars1(Map<String, Car> cars1) {
this.cars1 = cars1;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
// public List<Car> getCars() {
// return cars;
// }
// public void setCars(List<Car> cars) {
// this.cars = cars;
// }
// @Override
// public String toString() {
// return "Person [name=" + name + ", age=" + age + ", cars=" + cars1 + "]";
// }
// public Person(String name, int age, List<Car> cars) {
// super();
// this.name = name;
// this.age = age;
// this.cars = cars;
// }
public Person() {
super();
}
public Person(String name, int age, Map<String, Car> cars1) {
super();
this.name = name;
this.age = age;
this.cars1 = cars1;
}
@Override
public String toString() {
return "Person [name=" + name + ", age=" + age + ", cars1=" + cars1 + "]";
}
}