spring整体框架+IOC+Bean 学习笔记

1.spring包含了多个功能模块,其中最重要的是spring-core,主要提供ioc依赖注入功能的支持,spring中的其他模块功能都需要依赖该模块。

spring整体框架

最底层:

  1.core:spring框架的核心工具类

  2.bean:提供对bean的创建、配置和管理等功能

  3.context:提供一些core以外的扩展功能,例如,国际化、事件传播、资源加载等

  4.expression:提供对表达式语言SpEL的支持。spel允许你在运行时动态地评估表达式,这对于需要在运行时根据条件或外部输入来决定行为的场景非常有用。

第二层:

  AOP:

  aspects:

  Instrument:

  messaging:为 Spring 框架集成一些基础的报文传送应用。

第三层: 数据访问/集成:

  1.jdbc:不同的数据库有自己独立的api用于操作数据库,而在spring里,只需要和jdbc api交互即可对不同数据库进行操作。

  2.tx:对事务进行操作

  3.orm(object relational mapping):提供对 Hibernate、JPA、iBatis 等 ORM 框架的支持。对象关系映射模式实现程序对象到关系型数据库数据的映射。例如,orm可以将MySQL的一张表映射为一个Java类,表的字段就是这个类的成员变量。

  4.oxm:专门用于支持对象到XML的映射(OXM,Object-to-XML Mapping)。这个模块提供了一个抽象层,使得开发者可以使用多种不同的OXM框架(如JAXB、Castor、XMLBeans、JiBX和XStream)进行XML数据的序列化和反序列化操作。

  5.jms:消息服务。

springweb:

  1.web:对web功能的实现提供一些最基础的支持。

  2.webmvc:

  3.websocket:可以让客户端和服务端进行双向通信

  4.webflux:与传统的基于Servlet的Spring MVC不同,spring-webflux 使用反应式流(Reactive Streams)规范,支持非阻塞I/O操作和背压(backpressure)管理,从而能够更好地利用现代多核CPU和异步网络I/O的优势。

2.spring ioc

ioc是控制反转,它是一种设计思想,就是将对象创建的权力交给spring框架或者ioc容器实现。例如,一个项目中,一个service类可能依赖很多其他的类,如果需要实例化该类时,需要同时实例化他所依赖的类,当销毁该类时,还需要确保它的使用方法都已经销毁。而利用ioc的话,只需要配置好,在需要的地方直接引用即可,具体地实例创建交给ioc容器来实现。这样大大增加了项目的可维护性,降低开发难度。

扩展知识:

1.bean:

  bean是指一个由spring容器管理的对象。这个对象可以是任何一个Java类的实例。bean实例是通过IOC机制来创建和管理的。spring容器可以通过xml配置文件或者注解来创建bean。bean的主要优势是可以将对象的创建和管理与业务逻辑分离,这使得应用程序易于维护。例如,在一个web应用程序中,我们可以将数据库连接的创建和管理交给spring容器,业务逻辑由应用程序本身负责。这样,我们需要切换数据库时,只需要修改spring配置文件即可。

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

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

相关文章

【WebGIS实例】(18)MapboxGL 绘制矢量——线、面

前言 Mapbox GL JS 版本:3.6.0 该博客仅供学习参考,如果您是计划在实际项目中实现该功能,也推荐您直接使用已有的功能库: 官方案例:Draw a polygon and calculate its areamapbox-gl-draw:mapbox/mapbox-g…

基于Django+python的酒店客房入侵检测系统设计与实现

项目运行 需要先安装Python的相关依赖:pymysql,Django3.2.8,pillow 使用pip install 安装 第一步:创建数据库 第二步:执行SQL语句,.sql文件,运行该文件中的SQL语句 第三步:修改源…

HTTPS讲解

前瞻 HTTP与HTTPS的关系 HTTPS也是一个在应用层的协议,是在HTTP协议基础上的一个加密解密层 明文 密文 秘钥 明文->秘钥 加密 秘钥->明文 解密 例如:明文为7 秘钥为2 7^21015; 5就是密文例子: 因为http的内容是明文传输的,明文…

危险物品图像分割系统:一键训练

危险物品图像分割系统源码&数据集分享 [yolov8-seg-GFPN&yolov8-seg-CSwinTransformer等50全套改进创新点发刊_一键训练教程_Web前端展示] 1.研究背景与意义 项目参考ILSVRC ImageNet Large Scale Visual Recognition Challenge 项目来源AAAI Global…

LabVIEW共享变量通信故障

问题概述: 在LabVIEW项目中,使用IO服务器创建共享变量,并通过LabVIEW作为从站进行数据通信。通讯在最初运行时正常,但在经过一段时间或几个小时后,VI前面板出现错误输出,导致数据传输失败。虽然“分布式系统…

折扣影票接口对接渠道如何选择?

选择折扣影票接口对接渠道需要综合多方面因素考虑,以下是一些建议: 1.合法性和合规性: 确认供应商资质:优先选择具有相关票务经营资质的渠道。比如一些大型的在线票务平台,它们通常经过官方认证和监管,在…

[JAVAEE] 多线程的案例(二) - 阻塞队列 生产者消费者模型

目录 一. 什么是阻塞队列 二. java中的阻塞队列 三. 生产者消费者模型 3.1 生产者消费者模型与阻塞队列密不可分的关系 3.2 阻塞队列在生产者消费者模型的作用 a. 解耦合 b. 削峰填谷 四. 模拟实现阻塞队列 4.1 实现put方法 4.2 实现take方法 4.3 生产者消费者模型​…

Ansys APDL 语法

APDL 语法 1. 数组的定义例子2. 循环1. 数组的定义 *DIM, Par, Type, IMAX, JMAX, KMAX, Var1, Var2, Var3, CSYSID Par:用户指定的数组参数名。 Type:数组类型。有八种不同的类型: 1、ARRAY:数值型数组,与标准FORTRAN中的数组相类似,其下标只能是整数(默认方式),行标号、列…

了解C# 程序结构

本节我们将学习 C# 编程语言的结构,为了让大家能够对 C# 程序结构有个更好的理解,我们会先演示一个最小的、最简单的 C# 程序结构,以便作为接下来的章节的参考。 C# Hello World 实例 一个 C# 程序主要包括以下部分: 命名空间声明…

08 实战:色彩空间展示(本程序以视频为主)

程序效果如下: 我在这里讲解RGB和YCbCr的原理: 一、RGB颜色空间 1.1 基本概念 RGB颜色空间是一种最基础和常用的颜色表示方式,它基于人眼感知色彩的三原色原理。RGB分别代表: R(Red):红色G(Green):绿色B(Blue):蓝色通过这三种基本颜色的不同组合,可以产生人眼…

Promise、async、await 、异步生成器的错误处理方案

1、Promise.all 的错误处理 Promise.all 方法接受一个 Promise 数组,并返回所有解析 Promise 的结果数组: const promise1 Promise.resolve("one"); const promise2 Promise.resolve("two");Promise.all([promise1, promise2]).…

基于人体姿势博文文章

MATLAB运动目标检测系统应用背景 运动目标的定位跟踪,检测识别,运动分析在图像压缩、运动分析、交通检测,智能监控等方面有主要的应用。 首先,在图像压缩中,运动目标检测技术可以在背景区域中将前景区域提取分割出来…

91.【C语言】数据结构之单向链表的查找,中间插入和删除,销毁

目录 1.链表的查找函数 2.链表的修改函数 3.链表的中间插入函数 1.在pos之前插入:SLTInsertBefore函数 1.借助头指针pphead 示意图 代码示例(写入SList.c) 头文件添加SLTInsertbefore的声明 main.c的部分代码改为 1.测试中间插入 2.测试头部插入 3.测试pos为NULL的…

机器视觉:9点标定的原理与实现

一、什么是标定 标定就是将机器视觉处理得到的像素坐标转换成实际项目中使用到的毫米坐标。简单说即使看看实际单位距离内有几个像素,如下图所示,10mm的距离内有222个像素,那像素坐标和实际的毫米坐标就有个比例关系了。 二、九点标定 9点标…

API网关的作用--为什么微服务需要一个API网关?

微服务网关核心作用就是协议转换、安全隔离和流量控制 微服务架构中,API网关作为系统的入口点,可以统一处理所有客户端请求。 1)协议转换:它能够支持多种通信协议(如HTTP、gRPC等)之间的相互转换&#xff…

React Native 持久化数据

在 React Native 中,持久化数据是指将数据保存在设备上,以便在应用重新启动后仍然可以访问。以下是一些常用的数据持久化方法: AsyncStorage: React Native 提供了 react-native-async-storage/async-storage 库,这是一…

如何初始化一个线上的GitHub仓库,在本地已有的仓库中上传到线上

如何初始化一个线上的GitHub仓库,在本地已有的仓库中上传到线上, 首先,先创建一个线上的仓库 本地有一个曾经的仓库,或者本地git init创建一个本地仓库 根据线上仓库的主页给的提示代码进行上传 代码如下: …or cr…

gateway 整合 spring security oauth2

微服务分布式认证授权方案 在分布式授权系统中,授权服务要独立成一个模块做统一授权,无论客户端是浏览器,app或者第三方,都会在授权服务中获取权限,并通过网关访问资源 OAuth2的四种授权模式 授权码模式 授权服务器将授…

(三)行为模式:11、模板模式(Template Pattern)(C++示例)

目录 1、模板模式含义 2、模板模式的UML图学习 3、模板模式的应用场景 4、模板模式的优缺点 5、C实现的实例 1、模板模式含义 模板模式(Template Method Pattern)是一种行为设计模式,它定义了一个操作中的算法骨架,将某些步骤…

LeetCode9:回文数

原题地址:. - 力扣(LeetCode) 题目描述: 给你一个整数 x ,如果 x 是一个回文整数,返回 true ;否则,返回 false 。 回文数 是指正序(从左向右)和倒序&#xff…