【Spring学习09】依赖配置:配置集合
来源:互联网 发布:淘宝内容营销都有哪些 编辑:程序博客网 时间:2024/06/15 14:03
Spring中通过<list>
,<set>
,<map>
,<props>
元素,来设置集合类型的属性或参数。
它们分别对应java类型的List,Set,Map,Properties。
首先定义OrderCollect类:
public class OrderCollect { Properties Emailconfig; List<String> Productnames; Map<String, Object> purchaseList; Set<Object> setOthers; //getter and setter methods ...... @Override public String toString() { return "OrderCollect [Emailconfig=" + Emailconfig + ", Productnames=" + Productnames + ", purchaseList=" + purchaseList + ", setOthers=" + setOthers + "]"; } public void print(){ System.out.println(this.toString()); }}
调用:
public static void main(String[] args) throws Exception { ApplicationContext ctx = new ClassPathXmlApplicationContext( "beans.xml"); OrderCollect ordercollect=ctx.getBean("ordercollect",OrderCollect.class); ordercollect.print(); //ordercollect.PaySuccess();}
bean配置:
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> <bean id="ordercollect" class="twm.spring.start.OrderCollect"> </bean></beans>
运行输出:
OrderCollect [Emailconfig=null, Productnames=null, purchaseList=null, setOthers=null]
现在来修改配置,加点内容进去:
<bean id="ordercollect" class="twm.spring.start.OrderCollect"> <!-- property对象的设置 --> <property name="Emailconfig"> <props> <prop key="pop">pop.twm.com</prop> <prop key="user">support@twm.com</prop> <prop key="pwd">123456</prop> </props> </property> <!-- list对象的设置,数组的设置方式同这个一样 --> <property name="Productnames"> <list> <value>绿茶</value> <value>小番茄</value> <!-- 外部对象就用ref指向 bean id <ref bean="mybeanid" /> --> </list> </property> <!-- map对象的设置 --> <property name="purchaseList"> <map> <entry key="SN-1137569" value="3个"/> <entry key="SN-1137571" value="1个"/> <!-- 外部对象就用value-ref指向 bean id <entry key ="arefkey" value-ref="mybeanid"/>--> </map> </property> <!-- set对象的设置 --> <property name="setOthers"> <set> <value>要小票</value> <value>放整齐包严实</value> <!-- 外部对象就用ref指向 bean id <ref bean="mybeanid" />--> </set> </property></bean>
输出:
OrderCollect [Emailconfig={pop=pop.twm.com, user=support@twm.com, pwd=123456}, Productnames=[绿茶, 小番茄], purchaseList={SN-1137569=3个, SN-1137571=1个}, setOthers=[要小票, 放整齐包严实]]
所有集合的value值可以是普通值类型,也可以是对象或集合:
bean | ref | idref | list | set | map | props | value | null
集合合并
Spring容器也支持集合合并。合并的场景主要出现在父子集合。
也就是,子集合中的值是合并父子集合后的值,其中子集合中的值会覆盖父集合中的值。
<beans> <bean id="parent" abstract="true" class="example.ComplexObject"> <property name="adminEmails"> <props> <prop key="administrator">administrator@example.com</prop> <prop key="support">support@example.com</prop> </props> </property> </bean> <bean id="child" parent="parent"> <property name="adminEmails"> <props merge="true"> <prop key="sales">sales@example.com</prop> <prop key="support">support@example.co.uk</prop> </props> </property> </bean><beans>
注意,在bean child定义中,指定property adminEmails的<props/>
元素中merge=true
属性。当childbean被容器解析并且实例化时,实例中adminEmails的值包含了父子容器中adminEmails集合合并后的值,且重名属性值会覆盖父集合中的值。如下:
administrator=administrator@example.com
sales=sales@example.com
support=support@example.co.uk
这个合并行为,同样可以用在<list>,<map>,<set>
类型上
集合合并总结:
1、list没有覆盖行为。
2、对于元素,spring合并行为维持集合原有的顺序序;父集合中的元素索引位置比子集合元素索引位置靠前。
3、不能合并不同类型的集合,比如合并Map和List。
4、merge属性必须指定给父-子继承结构中的子bean,如果指定给了父bean则不会产生预期的合并结果。
- 【Spring学习09】依赖配置:配置集合
- Spring依赖注入 — 集合属性配置
- Spring依赖注入 — 集合属性配置
- 传智播客 Spring学习 xml配置依赖注入
- 【Spring学习06】依赖配置:元素idref
- 【Spring学习07】依赖配置:内部对象
- 【Spring学习08】依赖配置:复合属性
- spring学习之---高级依赖关系配置
- Spring之配置依赖
- spring 配置依赖
- Spring 依赖配置
- dwr+spring 集合配置
- Spring配置集合
- Spring 装配集合配置
- Spring学习总结(1.2)-依赖注入及配置了解
- Spring 4 学习笔记6:依赖注入(配置)
- 【Spring学习10】依赖配置:bean的父子继承
- Spring框架学习之高级依赖关系配置(一)
- let和const声明变量及其特性和区别
- Linux网络编程之UDP Socket程序示例
- poj 2263 Heavy Cargo
- 0009_Palindrome Number
- PL/SQL中游标的使用
- 【Spring学习09】依赖配置:配置集合
- 使用jQuery——Ajax请求本地json文件
- asd
- smarty模板重要知识点总结
- 文章标题3
- poj 2754/1014 多重背包之二进制优化
- Spring循环依赖
- jsp页面中<%%>中java代码的编译问题
- 2月,English