Spring中注入List,Set,Map,Properties
2012-12-27 09:44 Rollen Holt 阅读(54287) 评论(1) 编辑 收藏 举报下面的例子展示了如何注入
- List – <list/>
- Set – <set/>
- Map – <map/>
- Properties – <props/>
Spring beans
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | import java.util.List; import java.util.Map; import java.util.Properties; import java.util.Set; public class Customer { private List<Object> lists; private Set<Object> sets; private Map<Object, Object> maps; private Properties pros; //... } |
配置文件:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 | < 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-2.5.xsd"> < bean id="CustomerBean" class="com.mkyong.common.Customer"> <!-- java.util.List --> < property name="lists"> < list > < value >1</ value > < ref bean="PersonBean" /> < bean class="com.mkyong.common.Person"> < property name="name" value="mkyongList" /> < property name="address" value="address" /> < property name="age" value="28" /> </ bean > </ list > </ property > <!-- java.util.Set --> < property name="sets"> < set > < value >1</ value > < ref bean="PersonBean" /> < bean class="com.mkyong.common.Person"> < property name="name" value="mkyongSet" /> < property name="address" value="address" /> < property name="age" value="28" /> </ bean > </ set > </ property > <!-- java.util.Map --> < property name="maps"> < map > < entry key="Key 1" value="1" /> < entry key="Key 2" value-ref="PersonBean" /> < entry key="Key 3"> < bean class="com.mkyong.common.Person"> < property name="name" value="mkyongMap" /> < property name="address" value="address" /> < property name="age" value="28" /> </ bean > </ entry > </ map > </ property > <!-- java.util.Properties --> < property name="pros"> < props > < prop key="admin">admin@nospam.com</ prop > < prop key="support">support@nospam.com</ prop > </ props > </ property > </ bean > < bean id="PersonBean" class="com.mkyong.common.Person"> < property name="name" value="mkyong1" /> < property name="address" value="address 1" /> < property name="age" value="28" /> </ bean > </ beans > |
运行:
1 2 3 4 5 6 7 8 9 10 11 | public class App { public static void main( String[] args ) { ApplicationContext context = new ClassPathXmlApplicationContext( "SpringBeans.xml" ); Customer cust = (Customer)context.getBean( "CustomerBean" ); System.out.println(cust); } } |
我们也可以使用ListFactoryBean。The ‘ListFactoryBean‘ class provides developer a way to create a concrete List collection class (ArrayList and LinkedList) in Spring’s bean configuration file.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | < bean id="CustomerBean" class="com.mkyong.common.Customer"> < property name="lists"> < bean class="org.springframework.beans.factory.config.ListFactoryBean"> < property name="targetListClass"> < value >java.util.ArrayList</ value > </ property > < property name="sourceList"> < list > < value >1</ value > < value >2</ value > < value >3</ value > </ list > </ property > </ bean > </ property > </ bean > |
或者:加入:xmlns:util="http://www.springframework.org/schema/util"然后就可以:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | < beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:util="http://www.springframework.org/schema/util" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-2.5.xsd"> < bean id="CustomerBean" class="com.mkyong.common.Customer"> < property name="lists"> < util:list list-class="java.util.ArrayList"> < value >1</ value > < value >2</ value > < value >3</ value > </ util:list > </ property > </ bean > </ beans > |
SetFactoryBean The ‘SetFactoryBean‘ class provides developer a way to create a concrete Set collection (HashSet and TreeSet) in Spring’s bean configuration file.
set和上面的一样:
1 2 3 4 5 6 7 8 9 | < bean id="CustomerBean" class="com.mkyong.common.Customer"> < property name="sets"> < util:set set-class="java.util.HashSet"> < value >1</ value > < value >2</ value > < value >3</ value > </ util:set > </ property > </ bean > |
MapFactoryBean The ‘MapFactoryBean‘ class provides developer a way to create a concrete Map collection class (HashMap and TreeMap) in Spring’s bean configuration file.
map也一样:
1 2 3 4 5 6 7 8 9 | < bean id="CustomerBean" class="com.mkyong.common.Customer"> < property name="maps"> < util:map map-class="java.util.HashMap"> < entry key="Key1" value="1" /> < entry key="Key2" value="2" /> < entry key="Key3" value="3" /> </ util:map > </ property > </ bean > |
==============================================================================
本博客已经废弃,不在维护。新博客地址:http://wenchao.ren
我喜欢程序员,他们单纯、固执、容易体会到成就感;面对压力,能够挑灯夜战不眠不休;面对困难,能够迎难而上挑战自我。他
们也会感到困惑与傍徨,但每个程序员的心中都有一个比尔盖茨或是乔布斯的梦想“用智慧开创属于自己的事业”。我想说的是,其
实我是一个程序员
==============================================================================

【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具