Spring-装配基本属性和集合类型

集合类型的装配 
  前面学习的是如何注入依赖对象,还有基本类型,那么有些情况下呢我们还有可能要注入集合类型的对象,那么对于集合类型的这些对象我们该如何注入进去呢?好比我们要注入Set的集合,List的集合,或者Properties集合,或者Map集合,那么像这些集合我们该如何注入进去呢?

PersonService.java 
Java
代码 
package cn.itcast.service;   
  
import java.util.List;   
import java.util.Map;   
import java.util.Properties;   
import java.util.Set;   
  
public interface PersonService {   
    public Set<String> getSets();   
  
    public List<String> getLists();   
  
    public Properties getProperties();   
  
    public Map<String, String> getMaps();   

package cn.itcast.service;

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

public interface PersonService {
 public Set<String> getSets();

 public List<String> getLists();

 public Properties getProperties();

 public Map<String, String> getMaps();
}

PersonServiceBean.java 
Java
代码 
package cn.itcast.service.impl;   
  
import java.util.ArrayList;   
import java.util.HashMap;   
import java.util.HashSet;   
import java.util.List;   
import java.util.Map;   
import java.util.Properties;   
import java.util.Set;   
  
import cn.itcast.service.PersonService;   
  
public class PersonServiceBean implements PersonService {   
    private Set<String> sets = new HashSet<String>();   
    private List<String> lists = new ArrayList<String>();   
    private Properties properties = new Properties();   
    private Map<String, String> maps = new HashMap<String, String>();   
       
    public Map<String, String> getMaps() {   
        return maps;   
    }   
  
    public void setMaps(Map<String, String> maps) {   
        this.maps = maps;   
    }   
  
    public Properties getProperties() {   
        return properties;   
    }   
  
    public void setProperties(Properties properties) {   
        this.properties = properties;   
    }   
  
    public Set<String> getSets() {   
        return sets;   
    }   
  
    public void setSets(Set<String> sets) {   
        this.sets = sets;   
    }   
  
    public List<String> getLists() {   
        return lists;   
    }   
  
    public void setLists(List<String> lists) {   
        this.lists = lists;   
    }   
  
    public void save(){   
           
    }   

package cn.itcast.service.impl;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Properties;
import java.util.Set;

import cn.itcast.service.PersonService;

public class PersonServiceBean implements PersonService {
 private Set<String> sets = new HashSet<String>();
 private List<String> lists = new ArrayList<String>();
 private Properties properties = new Properties();
 private Map<String, String> maps = new HashMap<String, String>();
 
 public Map<String, String> getMaps() {
  return maps;
 }

 public void setMaps(Map<String, String> maps) {
  this.maps = maps;
 }

 public Properties getProperties() {
  return properties;
 }

 public void setProperties(Properties properties) {
  this.properties = properties;
 }

 public Set<String> getSets() {
  return sets;
 }

 public void setSets(Set<String> sets) {
  this.sets = sets;
 }

 public List<String> getLists() {
  return lists;
 }

 public void setLists(List<String> lists) {
  this.lists = lists;
 }

 public void save(){
  
 }
}


beans.xml 
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/beans   
           
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">  
          <bean id="personService" class="cn.itcast.service.impl.PersonServiceBean">  
            <property name="sets">  
                <set>  
                    <value>
第一个set元素</value>  
                    <value>
第二个set元素</value>  
                    <value>
第三个set元素</value>  
                </set>  
            </property>  
            <property name="lists">  
                <list>  
                    <value>
第一个list元素</value>  
                    <value>
第二个list元素</value>  
                    <value>
第三个list元素</value>  
                </list>  
            </property>  
            <property name="properties">  
                <props>  
                    <prop key="key1">value1</prop>  
                    <prop key="key2">value2</prop>  
                    <prop key="key3">value3</prop>  
                </props>  
            </property>  
            <property name="maps">  
                <map>  
                    <entry key="key-1" value="value-1"/>  
                    <entry key="key-2" value="value-2"/>  
                    <entry key="key-3" value="value-3"/>  
                </map>  
            </property>  
          </bean>  
</beans> 

<?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/beans
           http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">
          <bean id="personService" class="cn.itcast.service.impl.PersonServiceBean">
           <property name="sets">
            <set>
             <value>
第一个set元素</value>
             <value>
第二个set元素</value>
             <value>
第三个set元素</value>
            </set>
           </property>
           <property name="lists">
            <list>
             <value>
第一个list元素</value>
             <value>
第二个list元素</value>
             <value>
第三个list元素</value>
            </list>
           </property>
           <property name="properties">
            <props>
             <prop key="key1">value1</prop>
             <prop key="key2">value2</prop>
             <prop key="key3">value3</prop>
            </props>
           </property>
           <property name="maps">
            <map>
             <entry key="key-1" value="value-1"/>
             <entry key="key-2" value="value-2"/>
             <entry key="key-3" value="value-3"/>
            </map>
           </property>
          </bean>
</beans>
SpringTest.java 
Java
代码 
package junit.test;   
  
import org.junit.BeforeClass;   
import org.junit.Test;   
import org.springframework.context.support.AbstractApplicationContext;   
import org.springframework.context.support.ClassPathXmlApplicationContext;   
  
import cn.itcast.service.PersonService;   
  
public class SpringTest {   
  
    @BeforeClass  
    public static void setUpBeforeClass() throws Exception {   
    }   
  
    @Test public void instanceSpring(){   
        AbstractApplicationContext ctx = new ClassPathXmlApplicationContext("beans.xml");   
        PersonService personService = (PersonService)ctx.getBean("personService");   
        System.out.println("========set===========");   
        for(String value : personService.getSets()){   
            System.out.println(value);   
        }   
        System.out.println("========list===========");   
        for(String value : personService.getLists()){   
            System.out.println(value);   
        }   
        System.out.println("========properties===========");   
        for(Object key : personService.getProperties().keySet()){   
            System.out.println(key+"="+ personService.getProperties().getProperty((String)key));   
        }   
        System.out.println("========map===========");   
        for(String key : personService.getMaps().keySet()){   
            System.out.println(key+"="+ personService.getMaps().get(key));   
        }   
        ctx.close();   
           
    }   

package junit.test;

import org.junit.BeforeClass;
import org.junit.Test;
import org.springframework.context.support.AbstractApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import cn.itcast.service.PersonService;

public class SpringTest {

 @BeforeClass
 public static void setUpBeforeClass() throws Exception {
 }

 @Test public void instanceSpring(){
  AbstractApplicationContext ctx = new ClassPathXmlApplicationContext("beans.xml");
  PersonService personService = (PersonService)ctx.getBean("personService");
  System.out.println("========set===========");
  for(String value : personService.getSets()){
   System.out.println(value);
  }
  System.out.println("========list===========");
  for(String value : personService.getLists()){
   System.out.println(value);
  }
  System.out.println("========properties===========");
  for(Object key : personService.getProperties().keySet()){
   System.out.println(key+"="+ personService.getProperties().getProperty((String)key));
  }
  System.out.println("========map===========");
  for(String key : personService.getMaps().keySet()){
   System.out.println(key+"="+ personService.getMaps().get(key));
  }
  ctx.close();
  
 }
}

运行单元测试代码,控制台输出: 
========set=========== 
第一个set元素 
第二个set元素 
第三个set元素 
========list=========== 
第一个list元素 
第二个list元素 
第三个list元素 
========properties=========== 
key3=value3 
key2=value2 
key1=value1 
========map=========== 
key-1=value-1 
key-2=value-2 
key-3=value-3 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Spring实现自动装配的方式有两个角度:组件扫描和自动装配。组件扫描是指Spring自动发现应用上下文中所创建的bean,而自动装配是指Spring自动满足bean之间的依赖关系,也就是IoC/DI。\[2\] 在Spring中,可以使用@Autowired注解来实现自动装配。通过@Autowired注解,可以将构造器、普通字段和具有参数的方法与相应的bean进行自动装配。默认情况下,所有使用@Autowired注解的属性都需要被设置,如果Spring找不到匹配的bean进行装配,会抛出异常。如果某个属性允许不被设置,可以设置@Autowired注解的required属性为false。当IOC容器中存在多个兼容的bean时,Spring会尝试匹配bean的id值是否与变量名相同,如果相同则进行装配,否则可以在@Qualifier注解中提供bean的名称来进行装配。@Autowired注解还可以应用在数组属性和集合属性上,Spring会自动装配所有匹配的bean。当@Autowired注解用在java.util.Map上时,Spring会自动装配与值兼容的bean,并以bean的id值作为键。\[1\] 为了启用注解驱动的Bean定义和自动注入策略,需要在Spring配置文件中使用<context:component-scan>元素来启用扫描机制。这样Spring容器就能够自动扫描并创建带有@Component注解的,并自动装配它们之间的依赖关系。\[3\] #### 引用[.reference_title] - *1* [Spring之自动装配](https://blog.csdn.net/chen13333336677/article/details/101424191)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [Spring自动装配](https://blog.csdn.net/qq_41512902/article/details/126140352)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值