使用<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的最主要的有点更简洁。