命名空间装配
2019-11-17 本文已影响0人
二狗不是狗
待装配bean
public class Role {
private Long id;
private String roleName;
private String note;
}
public class User {
private Long id;
private String userName;
private String note;
}
public class UserRoleAssembly {
private Long id;
private List<Role> list;
private Map<Role, User> map;
private Set<Role> set;
}
/**** setter and getter函数 ****/
普通装配
<bean id="userRoleAssembly" class="com.ssm.UserRoleAssembly">
<property name="id" value="1"/>
<property name="list">
<list>
<ref bean="role1"/>
<ref bean="role2"/>
</list>
</property>
<property name="map">
<map>
<entry key-ref="role1" value-ref="user1"/>
<entry key-ref="role2" value-ref="user2"/>
</map>
</property>
<property name="set">
<set>
<ref bean="role1"/>
<ref bean="role2"/>
</set>
</property>
</bean>
命名空间装配
-
c-命名空间
是在 Spring 3.0 中引入的,它是在 XML 中更为简洁地描述构造器参数的方式,要使用它的话,必须要在 XML 的顶部声明其模式:
c-命名空间属性名以 “c:” 开头,也就是命名空间的前缀。接下来就是要装配的构造器参数名,在此之后如果需要注入对象的话则要跟上 -ref(如c:card-ref="idCard1")
<bean id="role1" class="com.ssm..Role" c:_0="1" c:_1="role_name_1" c:_2="role_note_1"/>
-
p-命名空间
c-命名空间通过构造器注入的方式来配置 bean,p-命名空间则是用setter的注入方式来配置 bean
p-命名空间属性名以 “p:” 开头,也就是命名空间的前缀。接下来就是要装配的setter参数名,在此之后如果需要注入对象的话则要跟上 -ref(如p:card-ref="idCard1")
<bean id="role2" class="com.ssm.Role" p:id="2" p:roleName="role_name_2" p:note="role_note_2"/>
-
util-工具类
util-工具类的命名空间可以简化集合类元素的配置,同样的我们需要引入其声明
<util:list id="list">
<ref bean="role1"/>
<ref bean="role2"/>
</util:list>
<util:map id="map">
<entry key-ref="role1" value-ref="user1"/>
<entry key-ref="role2" value-ref="user2"/>
</util:map>
<util:set id="set">
<ref bean="role1"/>
<ref bean="role2"/>
</util:set>
<bean id="userRoleAssembly" class="com.ssm.UserRoleAssembly" p:id="1" p:list-ref="list" p:map-ref="map" p:set-ref="set"/>
常用的util-工具类
image.png