WUJUNWEI'S BLOG
WuJunwei
Jul 1, 2020
It takes 18 minutes to read this article.

IOC之P名称空间,IOC的一些属性的赋值,IOC之子对象的赋值测试

IOC之P名称空间

p名称空间,是一种通过简短属性方式调用setXxx方法赋值属性的技术

实验6:通过p名称空间为bean赋值

加入p名称空间:

applicationContext.xml配置文件:

<bean id="p6" class="com.ncu.zte.beans.Person"  p:id="6" p:name="p名称空间" p:age="18" p:phone="13600889999"></bean>

测试代码:

@Test
public void test6() throws Exception {
	ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicaionContext.xml");
	
	System.out.println( applicationContext.getBean("p6") );
}

测试null值的使用

实验7:测试使用null值

<property name="name" value="null">表示的是name值为“null”字符串,若想设置name为null,应该写:

		<property name="name">
			<!-- null子标签表示赋null值 -->
			<null></null>
		</property>

applicationContext.xml配置文件:

<bean id="p7" class="com.ncu.zte.beans.Person">
	<property name="id" value="3" />
	<property name="name">
		<!-- null子标签表示赋null值 -->
		<null></null>
	</property>
	<property name="phone" value="15270868888" />
	<property name="age" value="18" />
</bean>

IOC之子对象的赋值测试(重点)

实验8:引用其他bean★

创建个新的工程。测试Spring的开发环境。此不重复。请参阅前面,环境搭建。

JavaBean对象

public class Car {
	private String carNo;
	private String name;

public class Person {
	private Integer id;
	private String name;
	private Car car;

applicationContext.xml配置文件

ref属性通过设置id值,将指定的bean对象赋值给属性

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"
	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
	
	<bean id="car" class="com.ncu.zte.Car">
		<property name="carNo" value="晋k801"></property>
		<property name="name" value="宝马"></property>
	</bean>
	<bean id="p8" class="com.ncu.zte.Person">
		<property name="id" value="8"></property>
		<property name="name" value="武俊伟"></property>
		<property name="car" ref="car"></property>
	
	</bean>
</beans>

测试代码:

@Test
public void test1() throws Exception {
	ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");
	
	System.out.println( applicationContext.getBean("p8") );
}

IOC之内部Bean的使用

实验9:引用内部bean

applicationContext.xml配置文件:

applicationContext.xml配置文件:

<bean id="p9" class="com.ncu.zte.Person">
	<property name="id" value="9"></property>
	<property name="name" value="p9"></property>
	<property name="car">
		<bean name="car02" class="com.ncu.zte.Car">
			<property name="carNo" value="晋k801"></property>
			<property name="name" value="宝马"></property>
		</bean>
	</property>

</bean>

常见错误:内部的Bean不能被外部使用

IOC之List属性的赋值

实验10:使用list子元素为List类型的属性赋值

list标签表示配置一个集合赋值属性

给Person对象添加Map集合属性:

<bean id="p10" class="com.ncu.zte.Person">
	<property name="id" value="10"></property>
	<property name="name" value="武俊伟"></property>
	<property name="list">
	<list>
		<value>item1</value>
		<value>item2</value>
		<value>item3</value>
	</list>
	</property>
	<property name="car">
		<bean name="car02" class="com.ncu.zte.Car">
			<property name="carNo" value="晋k802"></property>
			<property name="name" value="宝马"></property>
		</bean>
	</property>
</bean>

IOC之Map属性的赋值

实验11:使用map子元素为Map类型的属性赋值

  • map标签表示配置一个map集合给属性赋值
  • entry是map集合中的每一项

给Person对象添加Map集合属性:

public class Person {

	private Integer id;
	private String name;
	private Car car;
	private List<Object> list;
	private Map<String, Object> map;

	public Map<String, Object> getMap() {
		return map;
	}
	public void setMap(Map<String, Object> map) {
		this.map = map;
	}

applicationContext.xml配置文件:

<bean id="p11" class="com.ncu.zte.Person">
	<property name="id" value="10"></property>
	<property name="name" value="武俊伟"></property>
	<property name="map">
		<map>
			<entry key="key1" value="value1"></entry>
			<entry key="key2" value="value2"></entry>
			<entry key="key3" value-ref="car"></entry>
		</map>
	</property>
</bean>

IOC之Properties属性的赋值

实验12:使用prop子元素为Properties类型的属性赋值

给Person对象,添加Properties类型的属性

public class Person {

	private Integer id;
	private String name;
	private Car car;
	private List<Object> list;
	private Map<String, Object> map;
	private Properties props;

	public Properties getProps() {
		return props;
	}
	public void setProps(Properties props) {
		this.props = props;
	}

pplicationContext.xml配置文件

props标签表示配置Properties类型给属性赋值

<bean id="p12" class="com.ncu.zte.Person">
	<property name="id" value="12"></property>
	<property name="props">
		<props>
			<prop key="user">root</prop>
			<prop key="password">root</prop>
			<prop key="driver">com.mysql.jdbc.Driver</prop>
			<prop key="url">jdbc:mysql://localhost:3306/test</prop>
		</props>
	</property>
</bean>

IOC之Set类型属性赋值

给Person添加set类型的属性

public class Person {
	private Integer id;
	private String name;
	private Car car;
	private List<Object> list;
	private Map<String, Object> map;
	private Properties props;
	private Set<Object> set;

	public Set<Object> getSet() {
		return set;
	}
	public void setSet(Set<Object> set) {
		this.set = set;
	}

applicationContext.xml配置文件:

set标签配置一个Set集合赋值给属性

value 表示集合中一个字符串值

ref 表示引用一个bean对象

<bean id="p13" class="com.ncu.zte.Person">
<property name="set">
	<set>
		<value>value1</value>
		<value>value2</value>
		<ref bean="car"/>
	</set>
</property>
</bean>

IOC之util 名称空间

util名称空间,可以定义公共的集合类型数据。供外部和内部引用使用。

实验13:通过util名称空间创建集合类型的bean

添加util名称空间:

applicationContext.xml配置文件

使用util名称空间定义一个公共的,可供别人引用的list集合

<util:list id="list01">
	<value>list1</value>
	<value>list2</value>
	<value>list3</value>
	<value>list4</value>
</util:list>
<!-- 把list01的id对象。赋值给list属性 -->
<bean id="p14" class="com.ncu.zte.Person">
	<property name="id" value="14"></property>
	<property name="list" ref="list01"></property>
</bean>

IOC之级联属性赋值

spring中可以使用级联属性方式赋值,但赋值前这个子对象一定要先有值

<bean id="car" class="com.atguigu.pojo.Car">
	<property name="carNo" value="京B531212" />
	<property name="name" value="冰利"/>
</bean>

<bean id="p15" class="com.ncu.zte.Person">
	<property name="id" value="14"></property>
	<property name="car" ref="car" />
	<property name="car.carNo" value="京A123412">
	</property>
</bean>

常见错误:

级联属性一定要先注入对象。再注入对象的属性