使用p命令空间的xml快捷方式
p命令允许可以使用bean元素的属性依赖注入,也不需要<property/>元素的嵌套,也也可实现两者都兼有。
创建一个User类
public class User {
private String name;
private int age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public String toString() {
return "User{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
}
beans.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
https://www.springframework.org/schema/beans/spring-beans.xsd">
<!--xmlns:p="http://www.springframework.org/schema/p" 在头部必须添加-->
<bean id="user" class="com.yc.ch.User" p:name="Tom" p:age="15" />
</beans>
创建测试类,输出
User{name=‘Tom’, age=15}
注意:也可以使用p:name-ref实现bean的注入,name是当前要依赖注入的属性名,并不是name。慎重选择xml标准格式和p命令空间,在一定程度上后者没有前者灵活。
使用c命令空间的xml快捷方式
c-命令空间允许内敛属性来配置构造函数参数,而不是嵌套constructor-arg元素。
创建一个User类
public class User {
private String name;
private int age;
public User() {
}
public User(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public String toString() {
return "User{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
}
创建beans.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:c="http://www.springframework.org/schema/c"
xsi:schemaLocation="http://www.springframework.org/schema/beans
https://www.springframework.org/schema/beans/spring-beans.xsd">
<!--xmlns:c="http://www.springframework.org/schema/c"在头部必须定义 -->
<bean id="user" class="com.yc.ch.User" c:name="Tom" c:age="15"/>
</beans>
创建测试类,输出
User{name=‘Tom’, age=15}
注意:使用c:name-ref实现bean的注入,name表示当前注入依赖的属性名。而不是name本身。c:_0表示构造函数中第一个参数值,往右依次递增。