Spring中数组,List,Map,Set注入方式

本文通过具体示例展示了Spring框架中如何使用不同类型的集合(数组、List、Set、Map)进行依赖注入,并提供了完整的代码实现及运行结果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.--User类

package org.stelcomtech;

import java.util.List;
import java.util.Map;
import java.util.Set;

public class User {
 private String username;

 private int age;

 private Home myHome;

 private Home[] homes;

 private List homesList;

 private Set homesSet;

 private Map homesMap;

 public Home[] getHomes() {
  return homes;
 }

 public void setHomes(Home[] homes) {
  this.homes = homes;
 }

 public List getHomesList() {
  return homesList;
 }

 public void setHomesList(List homesList) {
  this.homesList = homesList;
 }

 public Map getHomesMap() {
  return homesMap;
 }

 public void setHomesMap(Map homesMap) {
  this.homesMap = homesMap;
 }

 public Set getHomesSet() {
  return homesSet;
 }

 public void setHomesSet(Set homesSet) {
  this.homesSet = homesSet;
 }

 public Home getMyHome() {
  return myHome;
 }

 public void setMyHome(Home myHome) {
  this.myHome = myHome;
 }

 public int getAge() {
  return age;
 }

 public void setAge(int age) {
  this.age = age;
 }

 public String getUsername() {
  return username;
 }

 public void setUsername(String username) {
  this.username = username;
 }

}

2.---Home类

package org.stelcomtech;

public class Home {
 private String homeAddr;

 public String getHomeAddr() {
  return homeAddr;
 }

 public void setHomeAddr(String homeAddr) {
  this.homeAddr = homeAddr;
 }

}

3.--测试类 MainTest

package org.stelcomtech;


import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.FileSystemXmlApplicationContext;

public class MainTest {
 public static void main(String[]args){
  ApplicationContext ac=new FileSystemXmlApplicationContext("org/stelcomtech/applicationContext.xml");
  User user=(User)ac.getBean("userid");
  Home[] homes=user.getHomes();
  System.out.println("************数组注入***************");
  for(int i=0;i<homes.length;i++){
   System.out.println("家庭地址:"+homes[i].getHomeAddr());
  }
  System.out.println("************List注入********************");
  List list=user.getHomesList();
  Iterator ir=list.iterator();
  while(ir.hasNext()){
   //Home home1=(Home)ir.next();
   System.out.println("家庭地址:"+ir.next().toString());
  }
  System.out.println("***********Set注入******************");
  Set set=user.getHomesSet();
  Iterator ir1=set.iterator();
  while(ir1.hasNext()){
   System.out.println("家庭地址:"+ir1.next().toString());
  }
  System.out.println("************Map注入**************");
  Map map=user.getHomesMap();
  
   Home home11=(Home)map.get("1");
   System.out.println("家庭地址:"+home11.getHomeAddr().toString());
   Home home111=(Home)map.get("2");
   System.out.println("家庭地址:"+home111.getHomeAddr().toString()); 
  }

 }

 

4.配置文件 applicationContext.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans-2.0.xsd">

 <bean id="myHome1" class="org.stelcomtech.Home" abstract="false"
  lazy-init="default" dependency-check="default">
  <property name="homeAddr">
   <value>wuhan</value>
  </property>
 </bean>
 <bean id="myHome2" class="org.stelcomtech.Home" abstract="false"
  lazy-init="default" dependency-check="default">
  <property name="homeAddr">
   <value>shanghai</value>
  </property>
 </bean>


    <!-- autowire 选择 byName时,按照Bean id 是否和类中的属性名来查找  -->
    <!-- autowire 选择 byType时,按照 类的类型 来查找 -->
 <bean id="userid" class="org.stelcomtech.User" abstract="false"
    lazy-init="default" dependency-check="default">
  <property name="username">
   <value>haiyang</value>
  </property>
  <property name="age">
   <value>22</value>
  </property>
 
  <!-- 数组注入方式 -->
  <property name="homes">
  <list>
   <ref bean="myHome1" />
   <ref bean="myHome2" />
  </list>
  </property>
  <!-- List注入方式 -->
   <property name="homesList">
   <list>
    <ref bean="myHome1" />
    <ref bean="myHome2" />
    <value>haha</value>
    
   </list>
  </property>
  <!-- Set注入方式 -->
   <property name="homesSet">
   <set>
    <value>hello</value>
    <ref bean="myHome2" />
    <ref bean="myHome1" />
   </set>
  </property>
  <!-- Map注入方式 -->
  <property name="homesMap">
   <map>
    <entry key="1">
     <ref bean="myHome1" />
    </entry>
    <entry key="2">
    <ref bean="myHome2" />
    </entry>
   </map>
  </property>

</bean> 
</beans>

 

5.运行结果

log4j:WARN No appenders could be found for logger (org.springframework.context.support.FileSystemXmlApplicationContext).
log4j:WARN Please initialize the log4j system properly.
************数组注入***************
家庭地址:wuhan
家庭地址:shanghai
************List注入********************
家庭地址:org.stelcomtech.Home@1d7ad1c
家庭地址:org.stelcomtech.Home@65a77f
家庭地址:haha
***********Set注入******************
家庭地址:hello
家庭地址:org.stelcomtech.Home@65a77f
家庭地址:org.stelcomtech.Home@1d7ad1c
************Map注入**************
家庭地址:wuhan
家庭地址:shanghai


备注:文章非原创,为节省时间奉行拿来主义,在此对原作者深表感谢

原文地址:http://blog.sina.com.cn/s/blog_616dbe3d0100ei5s.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值