Spring学习-10:Bean的集合属性的注入

4、Spring手写系列-为Bean对象注入属性和依赖Bean的功能实现 在软件开发中,系统的健壮性和抗压能力是衡量程序优劣的重要指标。无论是高并发场景下的超卖问题,还是复杂业务逻辑中的幂等性,开发人员都需要具备处理这些问题的能力。而这些问题往往不是通过简单的CRUD操作就能解决的,它需要深厚的技术积累和良好的架构设计。对于初级程序员来说,可能会遇到代码丢三落四、乱码等问题,这不仅影响系统的稳定性,还可能带来隐患。在这种情况下,要想让你的程序“抗揍”,就必须提升自己的技术水平,理解并应用更高级的设计理念和模式。 阅读详情

上节介绍了Bean的属性的注入,这一节我们详细说说集合属性的注入。

新建bean:

package com.js.demo7;
/**
 * 拥有集合属性的bean
 * @author js
 *
 */
import java.util.List;
public class CollectionBean {
	private List<String> list;

	public void setList(List<String> list) {
		this.list = list;
	}

	@Override
	public String toString() {
		return "CollectionBean [list=" + list + "]";
	}
	
}
配置bean到applicationContext.xml:

<bean id="collectionBean" class="com.js.demo7.CollectionBean">
	<property name="list">
		<list>
			<value>小小</value>
			<value>点点</value>
		</list>
	</property>
</bean>
编写测试类:

package com.js.demo7;

import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class SpringTest7 {
	@Test
	public void test(){
		ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");
		CollectionBean collectionBean = (CollectionBean)applicationContext.getBean("collectionBean");
		System.out.println(collectionBean);
	}
}
运行测试:


如果是注入一个Set类型的属性:

修改CollectionBean:

package com.js.demo7;
/**
 * 拥有集合属性的bean
 * @author js
 *
 */
import java.util.List;
import java.util.Set;
public class CollectionBean {
	private List<String> list;
	private Set<String> set;
	public void setSet(Set<String> set) {
		this.set = set;
	}

	public void setList(List<String> list) {
		this.list = list;
	}

	@Override
	public String toString() {
		return "CollectionBean [list=" + list + ", set=" + set + "]";
	}
}

修改CollectionBean的配置,注入set集合:

<bean id="collectionBean" class="com.js.demo7.CollectionBean">
	<property name="list">
		<list>
			<value>小小</value>
			<value>点点</value>
		</list>
	</property>
	<property name="set">
		<set>
			<value>1set</value>
			<value>2set</value>
		</set>
	</property>
</bean>
运行测试:

:

接下来,我们再看一下Map类型的属性:

修改CollectionBean:

package com.js.demo7;
/**
 * 拥有集合属性的bean
 * @author js
 *
 */
import java.util.List;
import java.util.Map;
import java.util.Set;
public class CollectionBean {
	private List<String> list;
	private Set<String> set;
	private Map<String, String> map;
	public void setSet(Set<String> set) {
		this.set = set;
	}

	public void setMap(Map<String, String> map) {
		this.map = map;
	}

	public void setList(List<String> list) {
		this.list = list;
	}

	@Override
	public String toString() {
		return "CollectionBean [list=" + list + ", set=" + set + ", map=" + map
				+ "]";
	}
	
}
接着,在applicationContext.xml中配置CollectionBean:

有两种写法:

1、复杂写法(较不常用)

<bean id="collectionBean" class="com.js.demo7.CollectionBean">
	<property name="list">
		<list>
			<value>小小</value>
			<value>点点</value>
		</list>
	</property>
	<property name="set">
		<set>
			<value>1set</value>
			<value>2set</value>
		</set>
	</property>
	<property name="map">
		<map>
			<entry>
				<key>
					<value>复杂写法</value>
				</key>
				<value>花费时间多</value>
			</entry>
		</map>
	</property>
</bean>
2、简化写法(较常用):

<bean id="collectionBean" class="com.js.demo7.CollectionBean">
	<property name="list">
		<list>
			<value>小小</value>
			<value>点点</value>
		</list>
	</property>
	<property name="set">
		<set>
			<value>1set</value>
			<value>2set</value>
		</set>
	</property>
	<property name="map">
		<map>
			<entry key="公司" value="创业"></entry>
			<entry key="城市" value="某市"></entry>
		</map>
	</property>
</bean>
另外,还可以在其中注入properties属性,仍以CollectionBean为例:

package com.js.demo7;
/**
 * 拥有集合属性的bean
 * @author js
 *
 */
import java.util.List;
import java.util.Map;
import java.util.Properties;
import java.util.Set;
public class CollectionBean {
	private List<String> list;
	private Set<String> set;
	private Map<String, String> map;
	private Properties properties; //底层继承HashTable
	public void setProperties(Properties properties) {
		this.properties = properties;
	}

	public void setSet(Set<String> set) {
		this.set = set;
	}

	public void setMap(Map<String, String> map) {
		this.map = map;
	}

	public void setList(List<String> list) {
		this.list = list;
	}

	@Override
	public String toString() {
		return "CollectionBean [list=" + list + ", set=" + set + ", map=" + map
				+ ", properties=" + properties + "]";
	}
	
}
配置bean:

<bean id="collectionBean" class="com.js.demo7.CollectionBean">
	<property name="list">
		<list>
			<value>小小</value>
			<value>点点</value>
		</list>
	</property>
	<property name="set">
		<set>
			<value>1set</value>
			<value>2set</value>
		</set>
	</property>
	<property name="map">
		<map>
			<entry key="公司" value="创业"></entry>
			<entry key="城市" value="某市"></entry>
		</map>
	</property>
	<property name="properties">
		<props>
			<prop key="username">root</prop>
			<prop key="passsword">admin</prop>
		</props>
	</property>
</bean>
运行测试:


数组的注入,同List。


Spring框架之手动装配Bean与属性注入三种方式 所谓手动Bean装配,就是在xml配置文件中配置一个bean标签。下面将介绍在xml配置文件中进行对象属性注入的三种方式。 一、Bean装配时属性注入三种方式 首先编写一个User模型 package cn.hestyle.model; /** * @program: Spring Project 01->User * @description: User模型 * @author: ... 阅读详情

相关推荐

面试题解答系列:在 Spring中如何注入java集合

您已经看到了如何配置基本数据类型使用value属性和使用标签的ref属性在你的bean配置文件中的对象引用。这两种情况下处理过单值到一个bean。 现在什么样,如果你想通过多元价值,如Java Collection类型List, Set, Map 及 Properties。要处理这种情况,Spring提供了四种类型的如下集合的配置元素: 元素 描述 list 这有助于注入值列表Li...

AD_plus的博客 2430

Spring学习之Bean属性注入

在 spring 中 bean 的属性注入有两种1构造器注入:2setter方法注入:关于 ref 属性作用使用 ref 来引入另一个 bean 对象,完成 bean 之间注入3集合属性的注入:在 spring 中对于集合属性,可以使用专门的标签来完成注入例如:list set map properties等集合元素来完成集合属性注入.3.1list属性注入如果属性是数组类型也可以使用 lis...

周氏“武功秘籍”之天马行空 1673

Spring手撸源码系列-给Bean对象注入属性

上一章是给Bean对象注入构造参数,这一章就来实现给Bean对象注入属性,一般来说类有构造方法也会有全局变量的属性,那么我们在创造的时候就需要注入进来,不能不管,这样才是一个完整的创建对象。 对于属性的创建除了基本类型也会有引用类型,引用其他的Bean对象等等都要考虑。 1.工程目录 标红的是新添加的 2.UML类图 为什么要添加这些类?马上介绍,首先目前加的三个类都是关于属性方面的,涉及的以前类的更改也是根据需要填充属性而更改的。 PropertyValue: 定义属性类,这个.

dfBeautifulLive的博客 1008

Spring 中如何为Bean注入集合呢?

Spring 中为Bean注入集合的方法分享

qq_25073223的博客 1043

MS1030超声波流量计电路实战:如何用15ps精度优化水表设计(附配置代码)

本文深入探讨了如何利用MS1030超声波流量计芯片实现15ps高精度测量,以优化水表设计。文章从系统误差分配出发,详细解析了硬件电路设计要点、SPI通信配置及核心优化技巧,如利用可编程偏置电压和8回波累加功能来提升抗干扰能力与测量稳定性,并附有实用的配置代码示例。

svm4gardener的博客 331

ERA5 数据集下载(2025最新 可运行)

众所周知,ERA5数据集经过了更新,尤其是在API访问和下载方式上发生了变化。2025年版的ERA5数据集为气象研究人员提供了更高质量的历史气象数据。本文将介绍如何通过新的API接口下载最新的ERA5数据集。

m0_72141699的博客 3589

spring学习笔记-bean及属性注入(转载)

spring的bean及属性注入方式

awentangtang9的博客 697

spring给bean注入属性的三种方式

一、引用方式注入: 声明集合bean -->    util:list id="langList">        value>c++value>        value>pythonvalue>    util:list>    util:set id="citySet">        value>重庆value>        value>天津value>    util:set> 

eeeeee123456fdsafds的博客 1710

数字IC后端实现 | Innovus各个阶段常用命令汇总

数字IC后端设计实现之Innovus常用命令汇总

weixin_37584728的博客 7312

SAP Joule for Consultants 与 Joule for Developers 全面解读

SAP推出面向不同用户群体的Joule AI助手:开发者版(Joule for Developers)专注于编码提效,嵌入开发工具链辅助生成、重构和测试代码;顾问版(Joule for Consultants)聚焦业务场景,集成SAP云应用知识库,为咨询项目提供方案设计、差距分析和实施指引。两者共享AI底座但功能侧重点不同:开发者版优化技术开发流程,顾问版加速项目交付周期。典型应用场景包括制造业云转型方案制定和ABAP代码迁移,分别展示了两版本在业务决策支持和技术实施中的价值。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 538

04-Spring Bean注入方式

实现IOC容器主要有两种方式:1,依赖查找2,依赖注入,Spring采用的是依赖注入的方式依赖注入又分为3种方式:2.1 构造器注入2.2 setter注入2.3 接口注入构造器注入和setter注入背后都是采用反射的技术来实现。接口注入,通常是指资源并非来自系统自身,而是来自系统外。比如我们可以在tomcat下配置数据源,然后在程序里面通过JNDI的方式去获取该数据源,这种方式就称为接口注入说明...

互联网十年老兵 167

逆强化学习:从专家示范中学习策略

逆强化学习(Inverse Reinforcement Learning,简称IRL)是强化学习(Reinforcement Learning,简称RL)的一个子领域,它的目标是从专家的行为中学习策略。在传统的强化学习中,智能体通过与环境交互,根据奖励信号来学习一个策略。而在逆强化学习中,我们没有直接的奖励信号,而是通过观察专家的行为来推断出奖励函数,从而学习到一个与专家类似的策略。逆强化学习作为强化学习的一个重要子领域,在许多实际应用场景中都取得了显著的成功。

AI天才研究院 1448

bean的属性注入

第三种方式: jdk提供的注解, JSR-250规范 提供 @Resource。Spring提供了一种机制, 自动发现你需要的属性, 自动把需要注入进来,这种机制称为。这个5个注解, 只能标记在你项目中的编写的类, 引入第三方jar中类,无法添加,第四种方式: JSR-330规范 , jdk还没有支持, @Inject。使用byName, 要求bean的名字与属性名(set方法后面名字)匹配。之前的方式,需要手动使用property标签,告诉spring需要什么。替换bean标签的注解。

weixin_63111096的博客 1523

Sigrity Power DC Package Multi-Resistor Compact ET Model Extraction模式提取封装基板电热阻模型

DIE(定义DIE的参数):material设置为silicon(硅),Attach material(贴片的材料,设置为Die Attach),Attach thickness(贴片的材料的厚度,厚度设置为0.001mm,点击ok。Cap为覆盖材料,Material定义材料类型,thickness定义厚度,length和width定义长宽,Adhesive Material为胶的材料,Adhesive Material为胶的厚度,本例不定义,跳过即可。

weixin_54787054的博客 437

仅使用 Python 创建的 Web 应用程序(前端版本)第03章Streamlit-多页面

接下来,我们将解释多页面切换。Streamlit 没有“多页面”或“页面路由”等功能。另一方面,通过根据用户动作切换要执行的功能,可以使其看起来好像存在“多个页面”。注意:我认为它类似于 SinglePageApplication (SPA)。然而,根据 React、Vue 等中使用的 URL 路径来更改页面的路由很困难。还有一个用于获取查询参数的实验性 API,但如果您确实需要这种功能,我认为认真尝试编写 React 或 Vue 是个好主意。我们来看一个通过按下按钮来切换页面的示例,如下所示。

xianyinsuifeng的博客 1326

[Spring] 注入Bean属性

通常,JavaBean的属性是私有的,同时拥有一组存取器方法,setXXX()和getXXX()形式存在。Spring可以借助属性的set方法来配置属性的值,以实现setter方式的注入。Kenny是一个很有天赋的乐曲演奏家,由Intrumentalist类定义,如下:package com.springinaction.springidol;public class Instrumentalist

楚兴 3850

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

Spring | Spring通过注解注入Bean的四种方式

Spring 注解的方式注入Bean 官方定义:IoC又叫依赖注入(DI)。它描述了对象的定义和依赖的一个过程。依赖的对象通过构造参数、工厂方法参数或者属性注入,当对象实例化后依赖的对象才被创建,当创建bean后容器注入这些依赖对象。这个过程基本上是反向的。 方法详情 1.在Spring中,一个类我们为它加上注解就可以被识别为一个Bean。 例如你在一个类上加上一个@Component注解...

cafeshadow的博客 1万+

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

Spring——Bean管理-xml方式进行属性注入

Spring中bean管理使用xml方式进行属性注入的7种方式

一起加油吧~ 2921

Spring 配置文件中 Bean 的 property 属性使用示例

本文对 Spring 中 Bean 元素的 property 属性做了简单地描述,并且举出了几个该属性的使用示例,以此记录,供人供己查阅,如有错误之处,欢迎指正。原创文章,转载请注明出处。

Hin 的博客 3万+

Spring学习笔记-构造和Set方法注入Bean及集合和null值的注入

目录 理论 代码及演示 理论 注入Bean:可以通过构造方法注入Bean,通过Set方法注入Bean; 集合类型有:List、Set、Map、Properties; 以及特殊的null值的注入; 通过构造方法注入Bean <bean id="bean" class="com...Bean"> <constructor-arg in...

IT1995的博客 6376

Spring----内bean和集合属性注入和properties属性注入

内部bean bean里的属性可以赋空值 先初始化三个Car的bean <!-- 定义若干辆车 --> <bean id="car1" class="com.entity.Car"> <property name="brand" value="宝马"/> <property n...

weixin_30955341的博客 806

spring注入一个实体bean的集合并指定顺序

本文向一个bean中注入一个接口实体bean的集合,并指定各个实体bean在集合中的顺序,然后在被注入bean中按顺序调用集合中的bean实体中的方法。核心实现时在实体类上使用@Order注解来定制各个bean被注入的顺序实现。 1、定义实体类方法接口 如下demo定义了一个接口类,其中有一个doHandler的方法。 package api.landsem.iot.v1.handler

三言两语 1万+

spring依赖注入 集合<list>与<map>属性的注入

spring中和属性的依赖注入list集合属性的依赖注入map集合属性的依赖注入 在spring中可以通过一组内置的xml标签来配置集合属性 list集合属性的依赖注入 创建Car类,有brand(品牌),crop(厂商),price(价格)三个属性 创建PersonList类,有name和Car(Object)两个属性 创建spring-di.xml配置文件,在配置文件中已经创建好了car car2 car3三个car对象 配置一个PersonList <bean id="personLis

weixin_44141172的博客 2403

spring专题笔记(四):依赖注入--set注入专题--注入的方法总结,注意事提醒以及代码演示(简单类型、外部bean和内部bean、级联属性、数据集合列表、特殊字符串以及空字符串的注入)

本篇文章主要详细介绍spring注入中基于set方法注入的形式,例如简单类型注入,外部bean和内部bea注入、级联属性注入、数据集合列表注入、特殊字符串注入以及空字符串注入等。

raining优快云的博客 1708

Spring配置详解(Bean属性注入)

Spring配置详解1. Bean标签2. Spring 实例化Bean 的三种方式1. 使用类中的无参构造方法2. 使用静态工厂【了解】3. 使用实例工厂【熟悉---Activiti 要使用 】3. Bean属性的注入1. 使用set方法注入2. 使用有参构造方法3. List 集合属性注入4. Set集合属性的注入5. Map集合属性的注入6. 数组属性的注入7. Properties的注入 1. Bean标签 id: Bean标签自定义名称,但不能使用特殊符号。在代码中可以根据id 值获取到对象 c

BB_andB的博客 759
上一篇: Spring学习-09:Bean的属性的注入
下一篇: Spring学习-11:配置文件引入的问题(配置文件过于庞大,不便于修改的处理方法)
Yes_JiangShuai
博客等级 码龄10年 149粉丝 249原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值