使用<property>元素爲bean的屬性裝備值和引用並不太複雜。儘管如此,spring的命名空間p提供了另一種bean屬性的裝配方式。
命名空間p的schema url是:http://www.springframework.org/schema/p
直接看例子(還是角色跟用戶的model):
public class Roles {
private int id;
private String roleName;
private Users users;
//省略set get方法
//重寫toString方法,方便測試
@Override
public String toString() {
return "Roles [id=" + id + ", roleName=" + roleName + ", users="
+ users + "]";
}
}
public class Users {
private int id;
private String name;
//省略set get方法
@Override
public String toString() {
return "Users [id=" + id + ", name=" + name + "]";
}
}
spring配置:
<bean id="roles" class="cn.com.ztz.spring.model.Roles"
p:id="1"
p:roleName="管理員"
p:users-ref="users"/>
<bean id="users" class="cn.com.ztz.spring.model.Users"
p:id="2"
p:name="張三"/>
運行main方法:
public static void main(String[] args) {
ApplicationContext context = new ClassPathXmlApplicationContext("classpath:applicationContext.xml");
Roles r=(Roles)context.getBean("roles");
System.out.println(r.toString());
}
輸出結果:
Roles [id=1, roleName=管理員, users=Users [id=2, name=張三]]
選擇<property>還是命名空間p取決於你,他們是等價的。命名空間p的最主要的有點更簡潔。