一步迅速了解Spring框架的几个特点

news2024/12/26 17:12:34

一,特点1:IOC(控制反转)

1,IOC是什么

          反转控制”(Inverse of Control) 不是什么技术,而是一种设计思想,就是将原本在程序中手动创建对象的控制权,交由 Spring 框架来管理

2,IOC的作用

        
        IOC 容器负责对象的实例化、对象的初始化,对象和对象之间依赖关系、 对象的销毁、对外提供对象的查找等操作,对象的整个生命周期都是由容器来 控制
        
        我们需要使用的对象都由 ioc 容器进行管理,不需要我们去手动通过 new 的方式去创建对象,由 ioc 容器直接帮我们组装好,当我们需要使用的时候直 接从 ioc 容器中直接获取就可以了。
正控: 若要使用某个对象,需要 自己去负责对象的创建
反控: 若要使用某个对象,只需要 从 Spring 容器中获取需要使用的对象不关心对象的创建过程,也就是把创建对象的控制权反转给了 Spring 框架.

3,IOC在Spring中所运行创建对象等操作的流程

二,特点2:Spring Bean 管理

           对于 Spring Bean 管理有两种方式

1,一般的基于 xml 配置方式

bean 配置需要 spring 管理的类
id 生成的对象名
class 全类名
name 对象别名,可以为多个
scope:
singleton(默认值):在 Spring 中只存在一个 bean 实例, 单例模式.
prototype:原型 getBean()的时候都会 new Bean()
request: 每 次 http 请 求 都 会 创 建 一 个 bean, 仅 用 于 WebApplicationContext 环境

2,Xml 配置方式依赖注入【DI:Dependency Injection】

指 Spring 创建对象的过程中, 将对象依赖属性(简单值,集合,对象)通
过配置设置给该对象
实现 IOC 需要 DI 做支持
注入的方式:
set 方法注入
构造方法注入
注解方式实现
开启注解扫描
< context :component-scan base-package ="包名" > </ context :component-scan >
注解创建对象
@Component(value=“user”)等同于 <bean id=“user” class=“”></bean>
@Service
@Repository
以上注解都可以实现创建对象功能,只是为了后续扩展功能,在不同的层使用不
同的注解标记
@Scope(value=“prototype”) 原型
@Scope(value=“ singleton ”) 单例
注解方式注入【DI:Dependency Injection】
@Autowired
@Autowired 是 Spring 提供的注解,可以写在字段和 setter 方法上。如果写在
字段上,那么就不需要再写 setter 方法。默认情况下它要求依赖对象必须存在,
如果允许 null 值,可以设置它的 required 属性为 false。 byType 自动注入
该注解默认使用按类型自动装配 Bean 的方式。
byName 自动注入
如果我们想使用按照名称(byName)来装配,可以结合@Qualifier 注解一起
使用。
需要在引用属性上联合使用注解@Autowired 与@Qualifier。@Qualifier 的
value 属性用于指定要匹配的 Bean 的 id 值。
JDK 注解@Resource 自动注入
S pring 提供了对 jdk 中@Resource 注解的支持。@Resource 注解既可以按名
称匹配 Bean,也可以按类型匹配 Bean。默认按照 ByName 自动注入
byName 注入引用类型属性
@Resource 注解指定其 name 属性,则 name 的值即为按照名称进行匹配
的 Bean 的 id。
注解与 XML 的对比
注解优点: 方便,直观,高效(代码少,没有配置文件的书写那么复杂)。
注解缺点: 以硬编码的方式写入到 Java 代码中,修改是需要重新编译代码的。
xml 优点是: 配置和代码是分离的,在 xml 中做修改,无需编译代码,只需重
启服务器即可将新的配置加载。
xml 的缺点是: 编写麻烦,效率低,大型项目过于复杂

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2083298.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

tensor core实现矩阵乘法的详细解读

之前关于tensor core的介绍可以参考链接添加链接描述 基础的tensor core实现C=AB的代码可以参考下面这段内容: 上面代码的几个注意事项: 首先是加载mma.h头文件,这个是包含wmma模板类的头文件。 其次是设置的WMMA_M=16,WMMA_N=16,WMMA_K=8,这三个参数的表示的意思是,对于…

乐凡三防:工业界的硬核产品——重新定义三防平板的极限

在工业4.0的浪潮中&#xff0c;科技与制造业的深度融合催生了一系列高性能、高耐用的智能产品。乐凡三防平板&#xff0c;作为工业界的新宠&#xff0c;正以其卓越的防护性能和强大的功能&#xff0c;重新定义了三防平板的极限&#xff0c;成为硬核科技的代表。 硬核防护&#…

Marching Cubes 算法三探

Marching Cubes 算法再探 CUDA SamplesMarchingCubesworkflowCodedata structurecomputeIsosurfacelaunch_classifyVoxelclassifyVoxel ThrustScanWrapperlaunch_compactVoxelscompactVoxels launch_generateTriangles2generateTriangles2 improvements 初探再探三探&#xff0…

翻译软件推荐:有道翻译及其他选择!

一款好的翻译软件不仅能帮助我们跨越语言障碍&#xff0c;还能提升我们的工作效率。今天&#xff0c;我将为大家深入介绍几款亲测好用的翻译工具&#xff1a;福昕在线翻译、福昕翻译客户端、海鲸AI翻译以及有道翻译。 福昕在线翻译 链接&#xff1a; https://fanyi.pdf365.cn…

write your own xx-starter【1】

在springboot 中&#xff0c;我们加入例如mybatis-spring-boot-starter&#xff0c;接着在application.yml配置数据库信息&#xff0c;就可以使用mybatis了&#xff0c;无需我们手动进行配置 这就是springboot威力&#xff0c;那么他是如何实现的呢&#xff1f;简单来说类似于…

Java面向接口编程—习题

Java面向接口编程—习题 Java面向接口编程—习题 Java面向接口编程—习题需求实现思路具体步骤1.步骤一:创建接口2.步骤2&#xff1a;创建接口的实现类3.步骤3&#xff1a;创建一个厂商4.步骤四&#xff1a;创建测试类 需求 说明采用面向接口编程思想组装一台计算机计算机的主…

【RabbitMQ工作原理相关】

RabbitMQ如何保证消息不丢失 开启生产者确认机制,确保生产者的消息能到达队列开启持久化功能,确保消息未消费前在队列中不会丢失开启消费者确认机制为auto,由spring确认消息处理成功后完成ack开启消费者失败重试机制,多次重试失败后将消息投递到异常交换机,交由人工处理 Rabb…

Linux Debian12安装Peek录屏软件,录制gif动态图

一、Peek安装 在Debian 12 (codenamed “Bookworm”) 上安装 Peek 录屏软件&#xff0c;可以通过以下步骤进行&#xff1a; 1.打开终端。 2.更新系统的包索引&#xff1a; sudo apt update3.安装 Peek 的依赖项&#xff1a; sudo apt install peek如果你遇到问题&#xff…

【大模型LLMs】文本分块Chunking调研LangChain实战

【大模型LLMs】文本分块Chunking调研&LangChain实战 Chunking策略类型1. 基于规则的文本分块2. 基于语义Embedding分块3. 基于端到端模型的分块4. 基于大模型的分块 Chunking工具使用&#xff08;LangChain&#xff09;1. 固定大小分块&#xff08;字符&token&#xff…

IC-Light还原细节的节点 DetailTransfer使用时报错-comfyui

&#x1f388;问题描述 今天在调试一个工作流节点的时候&#xff0c;遇到一个问题&#xff1a; Error occurred when executing DetailTransfer: The size of tensor a (848) must match the size of tensor b (853) at non-singleton dimension 2 File "F:\ComfyUI-aki\…

Volvo EDI 项目测试流程详解

近期知行帮助多个供应商成功对接Volvo EDI&#xff0c;这些案例中&#xff0c;供应商收到Volvo发来的EDI需求是基本一致的&#xff1a; 传输协议选择OFTP报文标准选择EDIFACT业务单据包括&#xff1a;DELFOR交付预测以及DESADV发货通知 扩展阅读&#xff1a;汽车EDI&#xff…

车规级CAN总线外围电路设计方案

目录 1、共模电感 1.1、电感值 1.2、泄漏电感 1.3、直流电阻 1.4、CMC的模式转换特性 2、终端分立电阻 3、总线电容 4、ESD保护二极管 在汽车领域&#xff0c;电磁兼容性&#xff08;EMC&#xff09;问题一直备受瞩目。相较于传统汽车&#xff0c;新能源汽车的EMC挑战更…

如何使用ssm实现社区智慧养老监护管理平台+vue

TOC ssm270社区智慧养老监护管理平台vue 系统概述 1.1 研究背景 智慧养老是面向居家老人、社区及养老机构的传感网系统与信息平台&#xff0c;并在此基础上提供实时、快捷、高效、低成本的&#xff0c;物联化、互联化、智能化的养老服务。 随着科技进步&#xff0c;新型养…

无法启动此程序,因为计算机中丢失dll,整理了7种解决方法!

当电脑出现“无法启动此程序&#xff0c;因为计算机中丢失dll”的错误弹窗时&#xff0c;这通常意味着系统中的DLL文件出现了缺失或错误。DLL文件是动态链接库文件&#xff0c;它们在软件运行中起着至关重要的作用。 造成dll文件缺失和错误的原因有很多&#xff0c;大部分问题都…

git clone 别人的项目上传到自己的Gitee或者github仓库

git clone别人的项目 git clone https://github.com/wohuweixiya/yft-design.git 进入该项目内&#xff0c;删除原有的.git信息 rm -r .git 初始化.git git init 将本地代码添加到仓库 git add . git commit -m "提交仓库说明" Github上新建一个和这个clone下来…

【快速选择算法】解决TopK问题中前K小的数字问题

目录 1.前言2.题目简介3.求解思路4.示例代码 1.前言 在一个数组中找到这个数组前K小的数字有三种方式&#xff1a; 排序 O(N*logN)堆排序&#xff1a;建立一个k个大小的大堆(如果是找前K大的数字的话用小堆) O(N*logK)快速选择算法&#xff1a;原地交换数字&#xff0c;使得该…

数据结构---单链表(常见的复杂操作)

目录 一、单链表 1.1.查找中间元素 1.2.查找倒数第K个节点 1.3.链表倒置 1.4.冒泡排序 1.5.选择排序 1.6.环&#xff0c;确认有环单链表的环入口和环大小 二、总结 一、单链表 1.1.查找中间元素 定义两个指针&#xff0c;分别指向第一个元素&#xff0c;第一个指针每次向后…

开源的工作流系统突出优点总结

当前&#xff0c;想要实现高效率的办公&#xff0c;可以一起来了解低代码技术平台、开源的工作流系统的相关特点和功能优势。作为较受职场喜爱的平台产品&#xff0c;低代码技术平台拥有可视化才做界面、灵活、好维护操作等多个优势特点&#xff0c;在推动企业流程化办公的过程…

在线生成书法字帖,想练习什么字就练习什么字

有没有想练习一个字的时候发现找不到字帖的情况&#xff0c;现在推荐一款在线生成字帖的网站 可选择对应格子类型&#xff0c;生成你想练习的字 在线生成字帖

【简历】25届北京某211JAVA简历:外卖项目要点像玩一样

注&#xff1a;为保证用户信息安全&#xff0c;姓名和学校等信息已经进行同层次变更&#xff0c;内容部分细节也进行了部分隐藏 简历说明 这是一份北京某211大学的java简历。上来第一要点还是要先确定求职层次&#xff0c;那211同学就不要想了&#xff0c;就一个目标&#xf…