Spring学习(五):Spring中注入一些细节

2023-11-16

1.字面值

字面值:可用字符串表示的值,可以通过 <value> 元素标签或 value 属性进行注入。基本数据类型及其封装类、String 等类型都可以采取字面值注入的方式若字面值中包含特殊字符,可以使用 <![CDATA[]]> 把字面值包裹起来。

2.引用其他的bean

组成应用程序的 Bean 经常需要相互协作以完成应用程序的功能. 要使 Bean 能够相互访问, 就必须在 Bean 配置文件中指定对 Bean 的引用。在 Bean 的配置文件中, 可以通过 <ref> 元素或 ref  属性为 Bean 的属性或构造器参数指定对 Bean 的引用。也可以在属性或构造器里包含 Bean 的声明, 这样的 Bean 称为内部 Bean。定义一个Persong的bean,里面有一个属性是car属性,这个属性其实汽车也是一个bean。

package com.wpl.spring.test;

public class Car {

	private String  brand;
	private String factory;
	private int price;
	
	public Car(String brand, String factory, int price) {
		super();
		this.brand = brand;
		this.factory = factory;
		this.price = price;
	}

	public String getBrand() {
		return brand;
	}

	public void setBrand(String brand) {
		this.brand = brand;
	}

	public String getFactory() {
		return factory;
	}

	public void setFactory(String factory) {
		this.factory = factory;
	}

	public int getPrice() {
		return price;
	}

	public void setPrice(int price) {
		this.price = price;
	}
	
}

package com.wpl.spring.test;

public class Person {

	private String name;
	private String address;
	private Car car;
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getAddress() {
		return address;
	}
	public void setAddress(String address) {
		this.address = address;
	}
	public Car getCar() {
		return car;
	}
	public void setCar(Car car) {
		this.car = car;
	}
	@Override
	public String toString() {
		return "Person [name=" + name + ", address=" + address + ", car=" + car + "]";
	}
	

}


上面就是两个bean,一个是person一个是car,在person中包含car。

<bean id="car2" class="com.wpl.spring.test.Car">
		<constructor-arg value="宝马" type="java.lang.String"></constructor-arg>
		<constructor-arg value="长春" type="java.lang.String"></constructor-arg>
		<constructor-arg value="50000" type="int"></constructor-arg>
	</bean>
	
	<bean id="person" class="com.wpl.spring.test.Person">
		<property name="name" value="小明"></property>
		<property name="address" value="杭州"></property>
		<property name="car" ref="car2"></property>
		
	</bean>

ref表示的是一个bean的id号,这样就可以引用其他的bean了。

3.内部bean
当 Bean 实例仅仅给一个特定的属性使用时, 可以将其声明为内部 Bean. 内部 Bean 声明直接包含在 <property> 或 <constructor-arg> 元素里, 不需要设置任何 id 或 name 属性
内部 Bean 不能使用在任何其他地方。

4.注入null值参数

可以使用专用的 <null/> 元素标签为 Bean 的字符串或其它对象类型的属性注入 null 值和 Struts、Hiberante 等框架一样,Spring 支持级联属性的配置。

5.集合属性

java.util.Map 通过 <map> 标签定义, <map> 标签里可以使用多个 <entry> 作为子标签. 每个条目包含一个键和一个值. 必须在 <key> 标签里定义键因为键和值的类型没有限制, 所以可以自由地为它们指定 <value>, <ref>, <bean> 或 <null> 元素. 可以将 Map 的键和值作为 <entry> 的属性定义: 简单常量使用 key 和 value 来定义; Bean 引用通过 key-ref 和 value-ref 属性定义使用 <props> 定义 java.util.Properties, 该标签使用多个 <prop> 作为子标签. 每个 <prop> 标签必须定义 key 属性. 

6.使用p命名空间

为了简化 XML 文件的配置,越来越多的 XML 文件采用属性而非子元素配置信息。Spring 从 2.5 版本开始引入了一个新的 p 命名空间,可以通过 <bean> 元素属性的方式配置 Bean 的属性。使用 p 命名空间后,基于 XML 的配置方式将进一步简化。

上面有几部分讲的比较简单,有需要的话可以自己去找相关的材料去看看,很容易掌握的。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Spring学习(五):Spring中注入一些细节 的相关文章

随机推荐

  • Unity笔记之获取鼠标停留的UI和删除按键触发后引用、判断鼠标是否在UI上

    需求 鼠标放在UI上 需要获取这个UI物体 以方便进行其他操作 百度学习了半天 最终拿了一个大哥 添加链接描述 的内容 本文仅作为个人笔记 建议大家直接去这大哥的博客看 不过我记得好像也可以通过继承unity内部的鼠标事件接口获取到物体 但
  • java.io.StreamCorruptedException: invalid type code: AC错误解决

    最近做IO时 出现了一个我百思不得其解的错误 虽然经过一番 解决的bug 但是对于这一方面的底层知识还是有待去深入了解 借这个机会 好好学习一下 一般 可以使用ObjectInputStream把对象写出到文件 再使用ObjectOutpu
  • 五分钟告诉你什么是爬虫?

    1 什么是爬虫 把互联网比喻成一张网 那么爬虫就是网上爬行的蜘蛛 把网的节点比喻成一个个网页 爬虫爬取到就相当于访问了该页面 获取了其信息 爬虫可以通过一个节点之后 顺着节点连线 链接 继续爬行到下一个节点 即通过一个网页继续获取后续的网页
  • 直播 RTM 推流在抖音的应用与优化

    动手点关注 干货不迷路 背景 随着互联网技术以及网络基建的快速发展和普及 视频直播已经成为了一种越来越普遍的娱乐和社交方式 无论是个人还是企业 都可以通过视频直播平台进行直播活动 向观众展示自己的生活 工作或者产品 同时 视频直播也成为了一
  • sqlmap自动注入1(Target完整的超级详细 如有错误望指出)

    SQLmap的自动注入学习之路 1 是通过五种sql注入漏洞的检测技术 and select from select sleep 20 a 这是基于时间的盲注检测 看他返回的时间 可以在DVWA试试 sqlmap支持非常全面的 数据库管理系
  • 咬了一口苹果死去的计算机之父——图灵

    艾伦 麦席森 图灵 Alan Mathison Turing 1912年6月23日 1954年6月7日 英国数学家 逻辑学家 被称为计算机科学之父 人工智能之父 1910年左右的伦敦 1912年生于英国伦敦帕丁顿 家族成员里有三位当选过英国
  • 星网宇达-组合导航在ros系统中的使用方法

    1 安装差分天线 两个 组合导航主机 DTU模块 不使用基站GPS的定位精度是米级的 园区里面自己搭建基站用DTU进行数据传输精度可达到厘米级 也可以利用千寻基站进行定位 效果不清楚 2 根据 杆臂以及天线安装说明文档 进行天线安装和杆臂配
  • 数据分析03——矩阵常用计算方法和函数

    0 前言 数组 计算机领域的概念 矩阵 数学领域的概念 对于Numpy而言 矩阵是数组的分支 1 创建矩阵 字符串创建矩阵 mat1 np matrix 1 2 3 4 列表形式创建矩阵 mat2 np matrix 5 6 7 8 通过数
  • QTextDocument和QTextBlock

    QTextDocument QTextDocument是用于结构化富文本文档的容器 为样式文本和各种类型的文档元素 如列表 表格 框架和图像 提供支持 可以创建它们以在QTextEdit中使用 也可以独立使用 每个文档元素均由关联的格式对象
  • 可视化工具Netron介绍

    Netron是一种用于神经网络 深度学习和机器学习模型的可视化工具 它可以为模型的架构生成具有描述性的可视化 descriptive visualization 源码在 https github com lutzroeder netron
  • Taro安装、启动命令、创建项目、修改端口号以及如何在微信开发者工具内运行

    1 安装Taro开发工具 npm install g tarojs cli 或者yarn global add tarojs cli 使用npm可能会有一些报错的信息 建议使用cnpm安装 2 使用命令创建模板 taro init myAp
  • 教你如何基于Redis来实现高性能延时消息队列!

    最近在倒腾自建博客后端系统 需要用到延时任务的功能 但手头只有一套MySQL和Redis 如果搞一套MQ成本有点大 于是想着用redis实现延时消息队列 有些场景用数据库的定时扫表也能简单实现延时消息的功能 不过对于我这边的实际场景 比如计
  • C#学习笔记 任务操作

    利用线程 可以方便地进行异步操作 但是线程模型有一个缺点 就是无法处理返回值 要在不同线程之间传递数据比较麻烦 任务则解决了这个问题 完整代码在这里 https github com techstay csharp learning not
  • 流程控制和数组(下)

    文章目录 Java 类 Arrays Java 类 Arrays Java提供的Arrays类里包含的一些statics修饰的方法可以直接操作数组 这个Arrays类里包含了如下的几个static修饰的方法 static修饰的方法可以直接通
  • 【数据挖掘】数据清洗

    数据挖掘 数据清洗 数据挖掘一般流程 数据挖掘一般流程 需求分析 数据挖掘任务分类 1 预测 分类 回归 2 聚类 文档归类 3 关联性分析 购物篮分析 4 异常检测 信用卡欺诈 获取数据 sql linux 爬虫 数据清洗 主要 去重 缺
  • Halcon极坐标变换检测缺陷

    一 原图 二 通过极性变换拉直 三 检测缺陷 This example checks bottle necks for defects First the bottle is detected with basic morphology e
  • ARouter 之注解 @JvmField 和 @Autowired

    文章目录 1 定义 2 使用 3 源码分析 4 为什么 Autowired 要搭配 JvmFiled 同时使用 1 定义 在 Activity 进行数据传递一般都会通过 getIntent putxxx getxxx 方法 在 Fragme
  • 【华为OD机试真题 python】查找重复代码【2022 Q4

    题目描述 查找重复代码 小明负责维护项目下的代码 需要查找出重复代码 用以支撑后续的代码优化 请你帮助小明找出重复的代码 重复代码查找方法 以字符串形式给定两行代码 字符串长度 1 lt length lt 100 由英文字母 数字和空格组
  • s2.ubuntu搭建s3c2440平台arm-linux-gcc交叉编译工具链安装+资源下载

    交叉编译工具包arm linux gcc 3 4 5 glibc 2 3 6 tar bz2 zip 蓝奏云 文件实际后缀是 bz2 下载后去掉 zip后缀 然后放入Ubuntu系统 具体步骤 1 复制交叉编译链的包到Ubuntu中 这里我
  • Spring学习(五):Spring中注入一些细节

    1 字面值 字面值 可用字符串表示的值 可以通过