当前位置: 首页 > news >正文

Spring3之Bean的属性详解

简介

Spring 中大量使用到 Bean 的注入来实现各个模块之间的依赖,本章将详细介绍 Bean 的主要属性

id 和 name 属性

  1. 每个 Bean 可以有一个 id 属性,并可以根据该 id 在 IoC 容器中查找该 Bean,该 id 属性值必须在IoC 容器中唯一

  2. 可以不指定 id 属性,只指定全限定类名,例如

<bean class="com.zyh.spring3.hello.StaticBeanFactory"/>

此时需要通过接口 getBean(Class requiredType)来获取Bean;

如果该Bean找不到则抛异常:NoSuchBeanDefinitionException

如果该类型的Bean有多个则抛异常:NoUniqueBeanDefinitionException

  1. 如果不指定id,只指定name,那么 name 为 Bean 的标识符,并且需要在容器中唯一

  2. 同时指定 name 和 id,此时 id 为标识符,而 name 为 Bean 的别名,两者都可以找到目标 Bean

  3. 可以指定多个 name,之间可以用分号(“;”)、空格(“ ”)或逗号(“,”)分隔开,如果没有指定id,那么第一个 name 为标识符,其余的为别名;若指定了 id 属性,则 id 为标识符,所有的 name 均为别名;例如

<bean id="hello1"  name="alias1 alias2;alias3,alias4" class="com.zyh.spring3.hello.HelloWorld"><constructor-arg index="0" value="Rod"/>
</bean>

此时,hello1 为标识符,而 alias1,alias2,alias3,alias4为别名,它们都可以作为 Bean 的键值

  1. 可以使用标签指定别名,别名也必须在IoC容器中唯一;例如
<bean name="bean" class="com.zyh.spring3.hello.HelloWorld"/>   
<alias alias="alias1" name="bean"/>   
<alias alias="alias2" name="bean"/>

ref 和 idref 属性
在 Spring 中,idref 属性和 ref 属性都可以用在 constructor-arg 元素和 property 元素中完成注入,那么它之间有什么区别呢?有如下一段配置

<bean id="bea" class="java.lang.String">      <constructor-arg index="0">        <value>testString</value>    </constructor-arg> 
</bean> 
<bean id="beanID" class="com.zyh.spring3.hello.HelloWorld">      <constructor-arg name="name">        <idref bean="bea" />    </constructor-arg>      <property name="id">          <ref local="bea" />      </property>      <property name="age" value="25"/>
</bean>

其实,idref 注入的是目标 bean 的 id 而不是目标 bean 的实例,同时使用 idref 容器在部署的时候还会验证这个名称的 bean 是否真实存在;其实 idref 就跟 value 一样,只是将某个字符串注入到属性或者构造函数中,只不过注入的是某个 Bean 定义的 id 属性值;所以上面的代码中

<constructor-arg name="name">    <idref bean="bea" />
</constructor-arg>

其实等价于

<constructor-arg name="name" value="bea"/>

而 ref 则是完全地不同,ref 元素是将目标 Bean 定义的实例注入到属性或构造函数中,ref 元素有三个属性,区别如下

(1) local 只能指定与当前配置的 Bean 在同一个配置文件中的 Bean 定义的名称

(2) parent 只能指定位于当前容器的父容器中定义的对象引用

(3) bean 基本上通吃,即包括以上两种情况都可以,所以,通吃情况下,直接使用 bean 来指定对象引用就可以了。 所以,上面那段配置代码中,beanID 这个 Bean 中构造函数的参数 name 注入的只是 “bea” 这个字符串;而其 id 属性注入的则是 testString 这个字符串

相关文章:

Spring3之Bean的属性详解

简介 Spring 中大量使用到 Bean 的注入来实现各个模块之间的依赖&#xff0c;本章将详细介绍 Bean 的主要属性 id 和 name 属性 每个 Bean 可以有一个 id 属性&#xff0c;并可以根据该 id 在 IoC 容器中查找该 Bean&#xff0c;该 id 属性值必须在IoC 容器中唯一 可以不指定…...

C语言之结构体内存的计算

结构体的内存 一.提出疑问 结构体占用的是一片连续的内存空间&#xff0c;大小是由成员变量的类型决定的。但并不是计算所有成员变量的类型大小之和那么简单。 先举一个实例&#xff1a; struct student {int age; //4个字节int telephone; //4个字节 }; int main() {struc…...

Java网络编程之UDP和TCP套接字

文章目录一. 网络编程概述二. UDP网络编程1. UDP套接字2. UDP客户端回显服务器程序2.1 UDP回显服务器2.2 UDP客户端2.3 UDP实现查词典的服务器三. TCP网络编程1. TCP套接字2. TCP客户端回显服务器程序2.1 TCP回显服务器2.2 TCP客户端2.3 解决服务器无法同时出力多个客户端的问题…...

Linux进程信号产生以及捕捉

一.什么是信号 生活中&#xff0c;有哪些信号相关的场景呢&#xff0c;比如&#xff1a;红绿灯&#xff0c;闹钟&#xff0c;转向灯等等 1.这里我们要知道&#xff0c;你为什么认识这些信号呢&#xff0c;记住了对应场景下的信号&#xff0b;后续是有”动作“要你执行的 2.我们…...

11. GLSL(OpenGL Shader Language)常用知识点汇总

1. 说明&#xff1a; 在使用OPenGL进行三维模型渲染时&#xff0c;需要使用到两个着色器对模型进行位置设置和颜色设置&#xff0c;分别为顶点着色器和片段着色器&#xff0c;这两个着色器是使用 GLSL 语法进行编写的。这篇文章总结了一些GLSL中的一些基本语法知识。 2. 基本…...

转发一张网络工程师考试的试卷2021.5.15

网络工程师考试 单选题 &#xff08;30题&#xff0c;每题1分&#xff0c;共30分&#xff09; 1. 你在一个网络中实现DHCP服务&#xff0c;配置一些计算机成为DHCP客户端&#xff0c;由于工作需要&#xff0c;一台系统为Windows 10 的客户端要把从DHCP服务器获得的地址释放&a…...

AMD发布23.2.1 新驱动 支持开年新作《魔咒之地》

如果说2023年有什么新作&#xff0c;《魔咒之地&#xff08;Forspoken&#xff09;》当属开年大作之一&#xff0c;1月25日才在steam平台发售。虽然开售后的表现似乎不如想象中优秀&#xff0c;加之价格相对昂贵&#xff0c;令不少玩家望而却步&#xff0c;但如果只是想尝鲜&am…...

开放平台如何做接口的签名和加解密?

目录安全性功能介绍实现流程开放平台依赖代码AES加解密工具类PlatformConfigRequestUtilsPlatformServiceCommonCodeZuulFilterHelperServerResponsePlatformContactRsaSignatureRsaUtilsStreamUtil开放平台-解密过滤器开放平台-加密过滤器调用方代码公共代码Get-DemoPost-Demo…...

Mr. Cappuccino的第40杯咖啡——Kubernetes之Pod生命周期

Kubernetes之Pod生命周期Pod生命周期官方文档Pod的状态初始化容器案例钩子函数Exec命令TCPSocketHTTPGet案例容器探测Exec命令TCPSocketHTTPGet探测时间重启策略Pod生命周期官方文档 Pod生命周期官方文档 Pod的状态 pending&#xff1a;挂起&#xff0c;apiserver创建了pod资…...

记一次OOM

1,问题描述&#xff1a; 新上了一版代码之后&#xff0c;上游服务请求我们服务失败&#xff0c;报错&#xff1a;“服务不可用”&#xff0c;发现注册中心上服务掉线&#xff0c;查询日志&#xff1a;发现oom&#xff1a;Java heap space,GC overhead limit exceeded。 容易…...

idea插件生成dao类service类controller类以及mapper.xml

idea插件生成dao类service类controller类以及mapper.xml 安装插件Easycode和MybatisX&#xff0c;不用自己写代码 1.Files——》Settings——》Plugins&#xff0c;分别搜索Easycode和MybatisX&#xff0c;点击下载。 2.新建一个springboot模板&#xff0c;选择的依赖如下 3.…...

DML 数据操作语言

概述 DML英文全称是Data Manipulation Language(数据操作语言)&#xff0c;用来对数据库中表的数据记录进行增、删、改操作。 添加数据&#xff08;INSERT&#xff09;修改数据&#xff08;UPDATE&#xff09;删除数据&#xff08;DELETE&#xff09; 添加数据 1、给指定字段…...

PySpark实战一之入门

1、PySpark的编程模型 分三个模块&#xff1a; 数据输入&#xff1a;通过SparkContext对象&#xff0c;完成数据输入 数据处理计算&#xff1a;输入数据后得到RDD对象&#xff0c;对RDD对象的成员方法进行迭代计算 数据输出&#xff1a;最后通过RDD对象的成员方法&#xff0…...

【DockerCE】Docker-CE 23.0.1正式版发布

很意外啊&#xff01;Docker社区版竟然直接从20.xx.xx版本&#xff0c;升级到23.xx.xx版本了。官网地址&#xff08;For RHEL/CentOS 7.9&#xff09;&#xff1a;https://download.docker.com/linux/centos/7/x86_64/stable/Packages/23.0.1版本官方安装包如下&#xff1a;# l…...

vscode开发的Vue家用电器维修服务系统nodejs+mysql

主要功能包括管理员&#xff1a;首页、个人中心、用户管理、维修员管理、维修信息管理、维修申请管理、维修处理管理、家电类别管理、配件信息管理、配件领用管理、维修结果管理、家电维修知识管理、公告信息管理、留言板管理&#xff0c;用户&#xff1a;首页、个人中心、维修…...

PyQt5数据库开发1 4.2 配置SQL Server 2008 数据源(ODBC编程)

文章目录 配置SQL Server 2008 数据源&#xff08;ODBC编程&#xff09; 1. 了解要配置的数据源服务器名称&#xff0c;以及数据库和对应表 2. 打开控制面板&#xff0c;点击管理工具 3. 双击数据源 4. 选择“用户DSN”选项卡&#xff0c;点击“添加” 5. 选择SQL Serv…...

【JavaEE】多线程代码实例:单例模式与阻塞队列BlockingQueue

目录 单例模式&#xff1a; 什么是单例模式&#xff1f; 单例模式的实现方式&#xff1a; 饿汉模式&#xff1a; 懒汉模式&#xff1a; 基于并发编程对单例模式线程安全问题的讨论&#xff1a; 阻塞队列&#xff1a; 标准库中的阻塞队列&#xff1a; 自实现阻塞…...

算法思想 - 搜索算法

本文主要介绍算法中搜索算法的思想&#xff0c;主要包含BFS&#xff0c;DFS。搜索相关题目深度优先搜索和广度优先搜索广泛运用于树和图中&#xff0c;但是它们的应用远远不止如此。BFS广度优先搜索的搜索过程有点像一层一层地进行遍历&#xff0c;每层遍历都以上一层遍历的结果…...

C#底层库--日期扩展类(上周、本周、明年、前年等)

系列文章 C#底层库–记录日志帮助类 本文链接&#xff1a;https://blog.csdn.net/youcheng_ge/article/details/124187709 C#底层库–数据库访问帮助类&#xff08;MySQL版&#xff09; 本文链接&#xff1a;https://blog.csdn.net/youcheng_ge/article/details/126886379 …...

如何在 Webpack 中开启图片压缩

工具对比 npmtrends.com/image-minim… 这四个压缩工具&#xff0c;从下载量来看&#xff0c;image-webpack-loader 较多&#xff0c;image-minimizer-webpack-plugin、imagemin-webpack-plugin 次之&#xff0c;imagemin-webpack 已经不再维护&#xff0c;因此不考虑此工具。 …...

第19节 Node.js Express 框架

Express 是一个为Node.js设计的web开发框架&#xff0c;它基于nodejs平台。 Express 简介 Express是一个简洁而灵活的node.js Web应用框架, 提供了一系列强大特性帮助你创建各种Web应用&#xff0c;和丰富的HTTP工具。 使用Express可以快速地搭建一个完整功能的网站。 Expre…...

Ubuntu系统下交叉编译openssl

一、参考资料 OpenSSL&&libcurl库的交叉编译 - hesetone - 博客园 二、准备工作 1. 编译环境 宿主机&#xff1a;Ubuntu 20.04.6 LTSHost&#xff1a;ARM32位交叉编译器&#xff1a;arm-linux-gnueabihf-gcc-11.1.0 2. 设置交叉编译工具链 在交叉编译之前&#x…...

中南大学无人机智能体的全面评估!BEDI:用于评估无人机上具身智能体的综合性基准测试

作者&#xff1a;Mingning Guo, Mengwei Wu, Jiarun He, Shaoxian Li, Haifeng Li, Chao Tao单位&#xff1a;中南大学地球科学与信息物理学院论文标题&#xff1a;BEDI: A Comprehensive Benchmark for Evaluating Embodied Agents on UAVs论文链接&#xff1a;https://arxiv.…...

P3 QT项目----记事本(3.8)

3.8 记事本项目总结 项目源码 1.main.cpp #include "widget.h" #include <QApplication> int main(int argc, char *argv[]) {QApplication a(argc, argv);Widget w;w.show();return a.exec(); } 2.widget.cpp #include "widget.h" #include &q…...

【Oracle】分区表

个人主页&#xff1a;Guiat 归属专栏&#xff1a;Oracle 文章目录 1. 分区表基础概述1.1 分区表的概念与优势1.2 分区类型概览1.3 分区表的工作原理 2. 范围分区 (RANGE Partitioning)2.1 基础范围分区2.1.1 按日期范围分区2.1.2 按数值范围分区 2.2 间隔分区 (INTERVAL Partit…...

【开发技术】.Net使用FFmpeg视频特定帧上绘制内容

目录 一、目的 二、解决方案 2.1 什么是FFmpeg 2.2 FFmpeg主要功能 2.3 使用Xabe.FFmpeg调用FFmpeg功能 2.4 使用 FFmpeg 的 drawbox 滤镜来绘制 ROI 三、总结 一、目的 当前市场上有很多目标检测智能识别的相关算法&#xff0c;当前调用一个医疗行业的AI识别算法后返回…...

什么是Ansible Jinja2

理解 Ansible Jinja2 模板 Ansible 是一款功能强大的开源自动化工具&#xff0c;可让您无缝地管理和配置系统。Ansible 的一大亮点是它使用 Jinja2 模板&#xff0c;允许您根据变量数据动态生成文件、配置设置和脚本。本文将向您介绍 Ansible 中的 Jinja2 模板&#xff0c;并通…...

Linux 内存管理实战精讲:核心原理与面试常考点全解析

Linux 内存管理实战精讲&#xff1a;核心原理与面试常考点全解析 Linux 内核内存管理是系统设计中最复杂但也最核心的模块之一。它不仅支撑着虚拟内存机制、物理内存分配、进程隔离与资源复用&#xff0c;还直接决定系统运行的性能与稳定性。无论你是嵌入式开发者、内核调试工…...

C/C++ 中附加包含目录、附加库目录与附加依赖项详解

在 C/C 编程的编译和链接过程中&#xff0c;附加包含目录、附加库目录和附加依赖项是三个至关重要的设置&#xff0c;它们相互配合&#xff0c;确保程序能够正确引用外部资源并顺利构建。虽然在学习过程中&#xff0c;这些概念容易让人混淆&#xff0c;但深入理解它们的作用和联…...

scikit-learn机器学习

# 同时添加如下代码, 这样每次环境(kernel)启动的时候只要运行下方代码即可: # Also add the following code, # so that every time the environment (kernel) starts, # just run the following code: import sys sys.path.append(/home/aistudio/external-libraries)机…...