文章目录
bean的构建XML
一个Bean标签可以注册一个组件 (对象, 类)
class, 注册的组件的全类名
id, 唯一标识
设值注入(利用get/set):property
name, 指定属性名
value, 指定属性值
<bean id="person01" class="com.xian.bean.Person">
<!-- 使用property标签为Person对象的属性赋值 -->
<property name="name" value="张三"></property>
<property name="age" value="18"></property>
<property name="email" value="zhangsan@xixi.com"></property>
<property name="gender" value="男"></property>
</bean>
ref引用外部bean
<bean id="car01" class="com.xian.bean.Car">
<property name="carName" value="baoma"></property>
<property name="color" value="blue"></property>
<property name="price" value="300000"></property>
</bean>
<bean id="person01" class="com.xian.bean.Person">
<!-- ref代表引用一个值. 应用外部bean, 严格引用, 为同一个对象 -->
<property name="car" ref="car01"></property>
赋空值:null
<property name="name">
<null />
</property>
内部bean
<bean id="person01" class="com.xian.bean.Person">
<property name="car">
<!-- 赋值的是一个自定义对象可以使用bean标签创建 car = new Car(); 应用内部bean -->
<!-- 内部bean不能被外界获取到 -->
<bean class="com.xian.bean.Car">
<property name="carName" value="baoma"></property>
<property name="color" value="blue"></property>
<property name="price" value="300000"></property>
</bean>
</property>
</bean>
构造注入:constructor-arg
<bean id="person03" class="com.xian.bean.Person">
<!-- 使用有参构造器为属性赋值, 构造器注入 -->
<constructor-arg name="name" value="小明"></constructor-arg>
<constructor-arg name="email" value="xiaoming@xixi.com"></constructor-arg>
<constructor-arg name="gender" value="男"></constructor-arg>
<constructor-arg name="age" value=""></constructor-arg>
</bean>
省略name属性:(index | type)
省略name属性, 将严格按照构造方法的参数顺序, 从0开始
index=“2”, 为参数指定索引位置(从0开始)
type="", 使用type 标签严格指定参数类型(当类中含有参数个数相同的构造函数时, 指定type能让spring更好分辨)
<bean id="person05" class="com.xian.bean.Person">
<constructor-arg value="小化"></constructor-arg>
<!-- 通过使用type 标签严格指定参数类型 -->
<constructor-arg value="32" type="java.lang.Integer"></constructor-arg>
<constructor-arg value="女" index="2"></constructor-arg>
</bean>
ref引用外部bean
</bean>
<bean id="person0" class="com.xian.bean.Person">
<constructor-arg name="car" ref="car01"></constructor-arg>
</bean>
集合及其它类型赋值
List
<property name="books">
<!-- books = new ArrayList<Book>(); -->
<list>
<!-- 添加每一个元素 -->
<bean class="com.xian.bean.Book" p:bookName="Spring"></bean>
<!-- 应用一个外部元素 -->
<ref bean="book01"/>
</list>
</property>
Map
<property name="maps">
<!-- 为Map赋值 -->
<map>
<!-- 一个Entry代表一个键值对 -->
<entry key="key01" value="张三"></entry>
<entry key="key02" value="18"></entry>
<entry key="key03" value-ref="book01"></entry>
<entry key="key04" >
<bean class="com.xian.bean.Car" p:carName="baoma" ></bean>
</entry>
<entry key="key05" >
<map></map>
</entry>
</map>
</property>
properties
<property name="properties">
<!-- properties = new properties();
所有key, value都是String, value直接写在标签体中 -->
<props>
<prop key="username">root</prop>
<prop key="password">123456</prop>
</props>
</property>
Array
<bean id="person" class="com.xian.bean.Person">
<property name="strings">
<array>
<value>haha</value>
<value>xixi</value>
</array>
</property>
</bean>
<bean id="person11" class="com.xian.bean.Person">
<property name="strings">
<list>
<value>haha</value>
<value>xixi</value>
</list>
</property>
</bean>
set
<bean id="person" class="com.xian.bean.Person">
<property name="set">
<set>
<value>set1</value>
<value>set2</value>
</set>
</property>
</bean>
util名称空间
util名称空间创建集合类型的bean, 方便别人引用
<bean id="person03" class="com.xian.bean.Person">
<property name="maps" ref="myMap"></property>
</bean>
<!-- 相当于new LinkedHashMap(); -->
<util:map id="myMap">
<description>myMap</description>
<entry key="key01" value="张三"></entry>
<entry key="key02" value="18"></entry>
<entry key="key03" value-ref="book01"></entry>
<entry key="key04">
<bean class="com.xian.bean.Car" p:carName="baoma"></bean>
</entry>
</util:map>
<!-- [[], Person, 12, {}] -->
<util:list id="myList">
<list></list>
<bean class="com.xian.bean.Person"></bean>
<value>12</value>
<ref bean="myMap"/>
</util:list>
P命名空间
添加Namespaces:
xmlns:p=“http://www.springframework.org/schema/p”
通过p名称空间为bean属性赋值
<bean id="person06" class="com.xian.bean.Person"
p:age="18" p:email="xiaoming@xixi.xom" p:name="xioaming" p:gender="男">
</bean>
级联属性赋值
<!-- 级联属性赋值, 级联属性:属性的属性 -->
<bean id="person04" class="com.xian.bean.Person">
<!-- 这儿是引用 , 同一个对象 -->
<property name="car" ref="car01"></property>
<!-- 上面car Bean 的price一起变 -->
<property name="car.price" value="900000"></property>
</bean>
其它类
person类:
public class Person {
//基本类型直接使用name, value去赋值
private String name;
private Integer age;
private String gender;
private String email;
private Properties properties;
private Car car;
private List<Book> books;
private Map<String, Object> maps;
.....
car类
public class Car {
private String carName;
private Integer price;
private String color;
......
Book类
public class Book {
private String bookName;
private String author;
......