Spring P 名称空间的属性注入

从2.0开始,Spring支持使用名称空间的可扩展配置格式。这些名称空间都是基于一种XML Schema定义。事实上,我们所看到的所有bean的配置格式都是基于一个 XML Schema文档。

p名称空间并不需要定义在一个XSD文件中,它只在Spring内核中存在采用p名称空间就可以在bean元素中使用属性来描述property的值。

1、通过引入P名称空间来完成属性的注入

(1)写法

普通属性:p : 属性名 = "值"
对象属性: p :属性名-ref="值"

(2)注入普通属性

a、引入p名称空间的头

在这里插入图片描述

b、使用p名称空间

在这里插入图片描述

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:p="http://www.springframework.org/schema/p"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="
        http://www.springframework.org/schema/beans 
        http://www.springframework.org/schema/beans/spring-beans.xsd">
  	<!-- Spring的属性注入的方式 -->
  	<!-- 构造方法的方式 -->
  	<!-- set方法方式符注入 -->
  	<!-- <bean id="car2" class="com.itzheng.spring.demo4.Car2">
  		<property name="name" value="奔驰"></property>
  		<property name="price" value="1000000"></property>
  	</bean> -->
  	<!-- 改为p名称空间的方式  -->
  	<!-- set方法方式符注入 -->
  	<bean id="car2" class="com.itzheng.spring.demo4.Car2" p:name="奇瑞QQ" p:price="30000"></bean>
</beans>
package com.itzheng.spring.demo4;
/*
 * set方法的属性注入
 */
public class Car2 {
	private String name;
	private Double price;
	public void setName(String name) {
		this.name = name;
	}
	public void setPrice(Double price) {
		this.price = price;
	}
	@Override
	public String toString() {
		return "Car2 [name=" + name + ", price=" + price + "]";
	}
}
	@Test
	public void demo5() {
		// 创建工程
		ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");
		// 获得到对应XML当中的对象
		// 获得到对应XML当中的对象
		Car2 car2 = (Car2) applicationContext.getBean("car2");
		System.out.println(car2);
	}

在这里插入图片描述

(3)注入对象

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:p="http://www.springframework.org/schema/p"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="
        http://www.springframework.org/schema/beans 
        http://www.springframework.org/schema/beans/spring-beans.xsd">

  		
  	<!-- Spring的属性注入的方式 -->
  	<!-- 改为p名称空间的方式  -->
  	<!-- set方法方式符注入 -->
  	 <bean id="car2" class="com.itzheng.spring.demo4.Car2" p:name="奇瑞QQ" p:price="30000"></bean>
  	
  	
  	<!-- set方法去注入对象类型的属性
  	<bean id="employee" class="com.itzheng.spring.demo4.Employee">
  	
  	value是用来设置普通类型的值。ref是用来设置其他类的id 或者name
  		<property name="name" value="张三"/>
  		<property name="car2" ref="car2"/>
  	</bean> -->
  	<bean id="employee" class="com.itzheng.spring.demo4.Employee" p:name="李四" p:car2-ref="car2"></bean>
</beans>

在这里插入图片描述

package com.itzheng.spring.demo4;
public class Employee {
	private String name;
	private Car2 car2;
	public void setName(String name) {
		this.name = name;
	}
	public void setCar2(Car2 car2) {
		this.car2 = car2;
	}
	@Override
	public String toString() {
		return "Employee [name=" + name + ", car2=" + car2 + "]";
	}
}

测试
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_44757034/article/details/107098264
今日推荐