Spring-2-bean的构建

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;
	......
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值