Spring框架中集合属性为对象的注入方法

  • 前言
  • 创建基础类
  • 创建`Course`类
  • 编写XML配置文件
  • 创建测试类
  • 执行结果

前言

在集合的属性注入中,如果注入属性为普通类型(Stringint)等,则直接按照《集合属性注入》进行配置即可。

当集合中的值为对象(MapCLASS)时,就需要使用新的注入方式。

创建基础类

首先是建立一个基础类,用作携带集合内容为类的属性值。下面的代码包含了普通属性集合和内容为对象的集合。

package com.action.spring.collectiontype;import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.Set;public class Stud {private String[] str;   private List<String> lists;   private Map<String, String> maps;private Set<String> sets;private List<Course> courseList;public void setStr(String[] str) {this.str = str;}public void setLists(List<String> lists) {this.lists = lists;}public void setMaps(Map<String, String> maps) {this.maps = maps;}public void setSets(Set<String> sets) {this.sets = sets;}public void setCourseList(List<Course> courseList) {this.courseList = courseList;}public void collectiontest() {System.out.println(Arrays.toString(str));System.out.println(lists);System.out.println(maps);System.out.println(sets);System.out.println(courseList);}}

其中private List<Course> courseList;即为类属性中List集合中包含内容为Course对象。

创建Course

创建集合List中包含的Course对象的类,并重写toString()方法

package com.action.spring.collectiontype;public class Course {private String cname;public void setCname(String cname) {this.cname = cname;}@Overridepublic String toString() {return "Course [cname=" + cname + "]";}}

其中重写toString()方法是为了能够使用println()将对象输出。

编写XML配置文件

其中包含的<!-- 注入外部bean -->为参考写法。

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:util="http://www.springframework.org/schema/util"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.xsdhttp://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd"><!-- 注入外部bean --><bean id="userService" class="com.action.spring.service.UserService"><property name="userDao" ref="userDaoImpl"></property></bean><bean id="userDaoImpl" class="com.action.spring.dao.UserDaoImpl"></bean><!-- 集合属性注入 --><bean id="stud" class="com.action.spring.collectiontype.Stud"><property name="str"><array><value>办公室</value><value>图书馆</value></array></property><property name="lists"><list><value>list1</value><value>list2</value></list></property><property name="maps"><map><entry key="信息部" value="4楼"></entry><entry key="人资部" value="7楼"></entry></map></property><property name="sets"><set><value>sets1</value><value>sets2</value></set></property><property name="courseList"><list><ref bean="course1"></ref><ref bean="course2"></ref></list></property></bean><bean id="course1" class="com.action.spring.collectiontype.Course"><property name="cname" value="Spring5学习"></property></bean><bean id="course2" class="com.action.spring.collectiontype.Course"><property name="cname" value="MyBatise学习"></property></bean></beans>

此时需要结合外部注入bean的方式完成类的属性注入。原本的注入方法是用<value>标签:

<property name="lists"><list><value>list1</value><value>list2</value></list>
</property>

当集合中内容为对象时,采用<ref>标签映入外部bean

<property name="courseList"><list><ref bean="course1"></ref><ref bean="course2"></ref></list>
</property>

然后对应的外部bean创建并注入属性即可:

<bean id="course1" class="com.action.spring.collectiontype.Course"><property name="cname" value="Spring5学习"></property>
</bean>
<bean id="course2" class="com.action.spring.collectiontype.Course"><property name="cname" value="MyBatise学习"></property>
</bean>

创建测试类

创建一个测试类,用于调用xml配置文件并调用方法。

package testdemo;import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.context.support.FileSystemXmlApplicationContext;import com.action.spring.Book;
import com.action.spring.Orders;
import com.action.spring.User;
import com.action.spring.collectiontype.Stud;
import com.action.spring.service.UserService;public class testSpring5 {@Testpublic void testAdd() throws Exception {ApplicationContext context =new FileSystemXmlApplicationContext("src/config/bean1.xml");Stud stud = context.getBean("stud", Stud.class);stud.collectiontest();}}

执行结果

Spring框架中集合属性为对象的注入方法相关推荐

  1. Spring框架中的控制反转和依赖注入

    控制反转: 控制反转是用来降低代码之间的耦合度的,基本思想就是借助"第三方"实现具有依赖对象的解耦. 为什么需要控制反转,因为项目中对象或多或少存在耦合.控制反转的关键在于Ioc容 ...

  2. Spring框架中提取list集合类型属性注入

    提取list集合类型属性注入 前言 引入名称空间 编写`xml`配置文件 运行结果 前言 对于某一个类型属性通用性较高的情况下,可以单独的提取出来,给需要的bean进行引用. 有关类的创建见<S ...

  3. Spring框架中XML配置文件注入集合(数组、LIST、MAP、SET)属性

    Spring框架中XML配置文件注入集合属性 前言 创建测试类与属性 配置XML配置文件 建立调用类 调用结果 前言 某些类的属性是可能是集合,包括:数组.LIST.MAP.SET等集合,在Sprin ...

  4. Spring框架中级联赋值(外部属性注入)以及内部属性注入

    Spring框架中级联赋值(外部属性注入)以及内部属性注入 前言 级联赋值 1.对上述外部`Bean`配置文件进行修改: 2.级联赋值第二种写法 内部`bean`属性注入 前言 Spring框架中存在 ...

  5. Spring框架中XML配置特殊属性注入

    Spring框架中XML配置特殊属性注入 前言 创建测试类 其他类型属性 前言 Spring框架中,在通过set方式进行属性注入时,可能会遇到某些特殊字符的注入,例如:null和某些标签字符" ...

  6. Spring框架中的设计模式(一)

    设计模式有助于遵循良好的编程实践.作为最流行的Web框架之一的Spring框架也使用其中的一些. 本文将介绍Spring Framework中使用的设计模式.这是5篇专题文章的第一部分.这次我们将发现 ...

  7. Spring框架中的Bean

    1.什么是Bean? 在Spring框架中,Bean是指一个由Spring容器管理的对象.这个对象可以是任何一个Java类的实例,例如数据库连接.业务逻辑类.控制器等等.Bean实例的创建和管理是由S ...

  8. Spring依赖注入的方式、类型、Bean的作用域、自动注入、在Spring配置文件中引入属性文件...

    1.Spring依赖注入的方式 通过set方法完成依赖注入 通过构造方法完成依赖注入 2.依赖注入的类型 基本数据类型和字符串 使用value属性 如果是指向另一个对象的引入 使用ref属性 User ...

  9. Spring框架中常用的设计模式详解

    一.浅谈控制反转(IOC)与依赖注入(DI) IOC(Inversion of Control)是Spring中一个非常重要的概念,它不是什么技术,而是一种解耦的设计思想.它主要的额目的是借助于第三方 ...

最新文章

  1. Nginx reload的时候出现的问题/usr/local/nginx/logs/nginx.pid
  2. DLPack构建跨框架深度学习编译器-实现张量之间的相互转换【pytorch】
  3. Android7.1update.zip升级在system/bin下新增可执行文件没有可执行权限问题
  4. python正则表达式提取电话号码_Python学习笔模式匹配与正则表达式之电话号码和Email地址提取程序...
  5. 优化Hibernate所鼓励的7大措施
  6. scala代码示例_Scala注释示例
  7. 解决360Wifi无法在校园网和企业网下使用的方法
  8. java实现公式解析
  9. postgresql 数据库中 like 、ilike、~~、~~*、~、~*的含义
  10. 【应用推荐】如何选择适合自己的笔记应用?附热门笔记应用上手总结
  11. Remove WebCakeDesktop
  12. 前端学习-VUE框架
  13. 【快速上手教程1】开源编队无人机-开机测试
  14. 10个免费的响应式布局HTML5+CSS3模板
  15. (HEBUT)机械原理课程设计——自动打印机
  16. JAVA线程之Thread类详解
  17. 智能养殖物联网系统精细管理,提升养猪场收益
  18. 如何下载安装python3.6.7_win764位下python3.6.5应该怎么安装
  19. ConsensusClustering及R实现
  20. 这 6 款在线 PDF 转换工具,得试

热门文章

  1. Java语言的特点和特性
  2. PAT——乙级1036:跟奥巴马一起编程 乙级1027:打印沙漏 (有坑)
  3. Beta冲刺 第一天
  4. Unity Inspector 给组件自动关联引用
  5. Javascript节点的访问
  6. 【jQuery笔记Part1】06-jQuery对象与js对象转换
  7. SQL注入攻击测试入实战(1)—成功渗透台湾某净化设备公司官网
  8. git文件gitignore修改后不生效
  9. 我33岁,从国企主管零基础转型大数据开发,年薪涨了20W
  10. 如何用研发流程搞垮一个团队?