1. 为了简化 XML 文件的配置,越来越多的 XML 文件采用属性而非子元素配置信息。
2. Spring 从 2.5 版本开始引入了一个新的 p 命名空间,可以通过 <bean> 元素属性的方式配置 Bean 的属性。
使用 p 命名空间后,基于 XML 的配置方式将进一步简化。
示例:
1. 添加模型类
package xyz.huning.spring4.di.xml.beancfg.p;
public class Cup {
private int id;
private String brand;
private String volume;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getBrand() {
return brand;
}
public void setBrand(String brand) {
this.brand = brand;
}
public String getVolume() {
return volume;
}
public void setVolume(String volume) {
this.volume = volume;
}
@Override
public String toString() {
return "Cup [id=" + id + ", brand=" + brand + ", volume=" + volume
+ "]";
}
}
2. 添加配置
<?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="cup1" class="xyz.huning.spring4.di.xml.beancfg.p.Cup" p:id="1" p:brand="SunCup" p:volume="700ml"></bean> <!--通过p命名空间为bean的属性赋值,需要先导入p命名空间--> <bean id="cup2" class="xyz.huning.spring4.di.xml.beancfg.p.Cup"> <property name="id" value="2"></property> <property name="brand" value="StarCup"></property> <property name="volume" value="500ml"></property> </bean> </beans>
3. 添加测试类
package xyz.huning.spring4.di.xml.beancfg.p;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class Main {
public static void main(String[] args) {
ApplicationContext ctx = new ClassPathXmlApplicationContext("p.xml");
Cup cup1 = ctx.getBean("cup1", Cup.class);
System.out.println(cup1);
Cup cup2 = ctx.getBean("cup2", Cup.class);
System.out.println(cup2);
((ClassPathXmlApplicationContext)ctx).close();
}
}