【spring set注入 注入集合】 使用set注入的方式注入List集合和Map集合/将一个bean注入另一个Bean

简介: Dao层代码: 1 package com.it.dao; 2 3 public interface SayHell { 4 public void sayHello(); 5 } View Code   Dao的Impl实现层: 1 package com.

 

Dao层代码:

1 package com.it.dao;
2 
3 public interface SayHell {
4         public void sayHello();
5 }
View Code

 

Dao的Impl实现层:

  1 package com.it.dao.impl;
  2 
  3 import java.util.List;
  4 import java.util.Map;
  5 
  6 import com.it.dao.SayHell;
  7 
  8 /**
  9  * Spring如何知道setter方法?如何将值注入进去的呢?其实方法名是要遵守约定的,setter注入的方法名要遵循“JavaBean getter/setter 方法命名约定”:
 10  * 
 11    JavaBean:是本质就是一个POJO类,但具有一下限制:
 12          该类必须要有公共的无参构造器,如public HelloImpl4() {};
 13          属性为private访问级别,不建议public,如private String message;
 14          属性必要时通过一组setter(修改器)和getter(访问器)方法来访问;
 15      setter方法,以“set” 开头,后跟首字母大写的属性名,如“setMesssage”,简单属性一般只有一个方法参数,方法返回值通常为“void”;
 16      getter方法,一般属性以“get”开头,对于boolean类型一般以“is”开头,后跟首字母大写的属性名,如“getMesssage”,“isOk”;
 17                   还有一些其他特殊情况,比如属性有连续两个大写字母开头,如“URL”,则setter/getter方法为:“setURL”和“getURL”,其他一些特殊情况请参看“Java Bean”命名规范。
 18  * @return
 19  */
 20 public class SayHelloImpl4 implements SayHell {
 21     
 22     private List<String> listValue;
 23     
 24     private Map<String,Integer> mapValue;
 25     
 26     private int fistBleed;
 27     
 28     private Map<String,SayHelloImpl4> firstMap;
 29     
 30     
 31     
 32 
 33     public Map<String, SayHelloImpl4> getFirstMap() {
 34         return firstMap;
 35     }
 36 
 37 
 38     public void setFirstMap(Map<String, SayHelloImpl4> firstMap) {
 39         this.firstMap = firstMap;
 40     }
 41 
 42 
 43     public int getFistBleed() {
 44         return fistBleed;
 45     }
 46 
 47 
 48     public void setFistBleed(int fistBleed) {
 49         this.fistBleed = fistBleed;
 50     }
 51 
 52 
 53     public List<String> getListValue() {
 54         return listValue;
 55     }
 56 
 57 
 58     public void setListValue(List<String> listValue) {
 59         this.listValue = listValue;
 60     }
 61 
 62     
 63 
 64     public Map<String, Integer> getMapValue() {
 65         return mapValue;
 66     }
 67 
 68 
 69     public void setMapValue(Map<String, Integer> mapValue) {
 70         this.mapValue = mapValue;
 71     }
 72 
 73 
 74     @Override
 75     public void sayHello() {
 76         int i=1;
 77         for (String string : listValue) {
 78             System.out.println(i+"、"+string);
 79             i++;
 80         }
 81 
 82     }
 83     
 84     public void sayMapGood(){
 85         int size = mapValue.size();
 86         if(size!=0){
 87             for(int a=1; a<=size ;a++){
 88                 System.out.println(a+"、"+mapValue.get(String.valueOf(a)));
 89             }
 90         }
 91     }    
 92     
 93     public void sayMapGood2(){
 94         int size = firstMap.size();
 95         if(size!=0){
 96             System.out.println(firstMap.get("1").fistBleed);
 97         }
 98     }
 99 
100 }
View Code

 

配置文件setList.xml:

 1 <?xml version="1.0" encoding="UTF-8"?>  
 2 <beans  
 3 xmlns="http://www.springframework.org/schema/beans"  
 4 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
 5 xmlns:context="http://www.springframework.org/schema/context"  
 6 xsi:schemaLocation="  
 7 http://www.springframework.org/schema/beans        http://www.springframework.org/schema/beans/spring-beans-3.0.xsd  
 8 http://www.springframework.org/schema/context                http://www.springframework.org/schema/context/spring-context-3.0.xsd">  
 9 
10 
11      
12     <!-- 测试1  使用set注入方法       注入集合类型   Spring不仅能注入简单类型数据,还能注入集合(Collection、无序集合Set、有序集合List)类型、数组(Array)类型、字典(Map)类型数据、Properties类型数据 -->
13     <bean id="listBean" class="com.it.dao.impl.SayHelloImpl4">
14         <property name="listValue">
15             <list><!-- <list value-type="java.lang.String"> 如果是set集合就是用<set>标签,可以在此指定泛型,若不指定,则默认是String类型的 -->
16                 <value>德玛西亚</value>
17                 <value>艾欧尼亚</value>
18                 <value>暗影岛</value>
19                 <value>德莱文明</value>
20             </list>
21         </property>
22     </bean>
23     
24     <!-- Spring容器目前能对各种基本类型把配置的String参数转换为需要的类型,
25             如果转换出错,将抛出相应的异常,
26             默认的<value>中间的值均是String类型的
27          Spring类型转换系统对于boolean类型进行了容错处理,除了可以使用“true/false”标准的Java值进行注入,还能使用“yes/no”、“on/off”、“1/0”来代表“真/假” -->
28     
29     <!-- 测试2 使用set注入方法     map -->
30     <bean id="mapBean" class="com.it.dao.impl.SayHelloImpl4">
31         <property name="mapValue">
32             <map key-type="java.lang.String" value-type="java.lang.Integer">
33                 <entry>
34                     <key>
35                         <value>1</value>
36                     </key>
37                     <value>
38                         123
39                     </value>
40                 </entry>
41                 <entry key="2" value="456"></entry>
42                 <entry key="3" value="789"></entry>
43             </map>
44         </property>
45     </bean>
46     
47     
48     <!-- 测试3  一个bean注入到另一个bean中 -->
49     <bean id="intBean" class="com.it.dao.impl.SayHelloImpl4">
50         <property name="fistBleed">
51             <value type="java.lang.Integer">998</value>
52         </property>
53     </bean>
54     
55     <bean id="mapBean2" class="com.it.dao.impl.SayHelloImpl4">
56         <property name="firstMap">
57             <map key-type="java.lang.String" value-type="com.it.test.SayHelloImpl4">
58                 <entry>
59                     <key>
60                         <value>1</value>
61                     </key>
62                     <ref bean="intBean"/>
63                     
64                 </entry>
65             </map>
66         </property>
67     </bean>
68     
69     
70     
71     
72     
73 </beans>  
View Code

 

实现层 测试类:SayHelloTest4.java

 1 package com.it.test;
 2 
 3 import org.junit.Test;
 4 import org.springframework.context.ApplicationContext;
 5 import org.springframework.context.support.FileSystemXmlApplicationContext;
 6 
 7 import com.it.dao.SayHell;
 8 import com.it.dao.impl.SayHelloImpl4;
 9 
10 public class SayHelloTest4 {
11     
12     ApplicationContext applicationContext =new FileSystemXmlApplicationContext("resources/setList.xml");
13     @Test
14     public void testListSet(){
15         SayHell sayHell =  applicationContext.getBean("listBean",SayHell.class);
16         sayHell.sayHello();
17         
18         SayHelloImpl4 sayHell4 =  (SayHelloImpl4) applicationContext.getBean("mapBean");
19         sayHell4.sayMapGood();
20         
21         
22         SayHelloImpl4 sayHell42 =  (SayHelloImpl4) applicationContext.getBean("mapBean2");
23         sayHell42.sayMapGood2();
24     }    
25 }    
View Code

 

实现效果:

 

相关文章
|
27天前
|
缓存 安全 Java
Spring框架中Bean是如何加载的?从底层源码入手,详细解读Bean的创建流程
从底层源码入手,通过代码示例,追踪AnnotationConfigApplicationContext加载配置类、启动Spring容器的整个流程,并对IOC、BeanDefinition、PostProcesser等相关概念进行解释
Spring框架中Bean是如何加载的?从底层源码入手,详细解读Bean的创建流程
|
27天前
|
XML Java 数据格式
Spring IOC—基于XML配置Bean的更多内容和细节(通俗易懂)
Spring 第二节内容补充 关于Bean配置的更多内容和细节 万字详解!
143 18
Spring IOC—基于XML配置Bean的更多内容和细节(通俗易懂)
|
14天前
|
XML Java 数据格式
spring复习02,xml配置管理bean
详细讲解了Spring框架中基于XML配置文件管理bean的各种方式,包括获取bean、依赖注入、特殊值处理、属性赋值、集合类型处理、p命名空间、bean作用域及生命周期和自动装配。
spring复习02,xml配置管理bean
|
12天前
|
算法
你对Collection中Set、List、Map理解?
你对Collection中Set、List、Map理解?
24 5
|
13天前
|
NoSQL Java Redis
List集合按照由小到大排序或者由大到小排序
List集合按照由小到大排序或者由大到小排序
12 3
|
14天前
|
XML Java 数据格式
spring复习03,注解配置管理bean
Spring框架中使用注解配置管理bean的方法,包括常用注解的标识组件、扫描组件、基于注解的自动装配以及使用注解后的注意事项,并提供了一个基于注解自动装配的完整示例。
spring复习03,注解配置管理bean
|
2月前
|
Java
用JAVA架建List集合为树形结构的代码方法
这段代码定义了一个表示树形结构的 `Node` 类和一个用于构建树形结构的 `TreeController`。`Node` 类包含基本属性如 `id`、`pid`、`name` 和 `type`,以及子节点列表 `children`。`TreeController` 包含初始化节点列表并将其转换为树形结构的方法。通过过滤和分组操作实现树形结构的构建。详情可见:[代码示例链接1](http://www.zidongmutanji.com/zsjx/43551.html),[代码效果参考链接2](https://www.257342.com/sitemap/post.html)。
32 5
|
15天前
|
Go 定位技术 索引
Go 语言Map(集合) | 19
Go 语言Map(集合) | 19
|
14天前
|
存储 前端开发 API
ES6的Set和Map你都知道吗?一文了解集合和字典在前端中的应用
该文章详细介绍了ES6中Set和Map数据结构的特性和使用方法,并探讨了它们在前端开发中的具体应用,包括如何利用这些数据结构来解决常见的编程问题。
ES6的Set和Map你都知道吗?一文了解集合和字典在前端中的应用
|
2天前
|
存储 分布式计算 Java
Stream很好,Map很酷,但答应我别用toMap():Java开发中的高效集合操作
在Java的世界里,Stream API和Map集合无疑是两大强大的工具,它们极大地简化了数据处理和集合操作的复杂度。然而,在享受这些便利的同时,我们也应当警惕一些潜在的陷阱,尤其是当Stream与Map结合使用时。本文将深入探讨Stream与Map的优雅用法,并特别指出在使用toMap()方法时需要注意的问题,旨在帮助大家在工作中更高效、更安全地使用这些技术。
9 0