Spring——框架介绍

news2024/11/17 2:48:42
  1. 每一个Java技术中都会存在一个“核心对象”,这个核心对象来完成主要任务
  2. 为了得到核心对象,需要创建若干个辅助对象,从而导致开发步骤增加JDBC中
    1. JDBC
      1. 核心对象——PreparedStatement
        1. 通过DriverManager得到数据库厂商提供的Driver对象
        2. DriverManager建立数据库连接对象(Connection)
        3. Connection负责简历PreparedStatement
    1. MyBatis中
      1. 核心对象——Dao代理对象
        1. 创建SqlSessionFactoryBuilder创建SqlSessionFactory对象
        2. 通过SqlSessionFactory对象创建SqlSession对象
        3. 通过SqlSession申请Dao代理对象
  1. Srping框架的作者认为:之所以产生多个开发步骤的原因,是因为需要创建辅助对象,需要辅助对象创建核心对象。如果使用一个“容器对象”完成指定技术中“辅助对象”和“核心对象”的创建与初始化,并将“核心对象”进行存储。这样开发人员使用时就可以直接从“容器对象”得到需要“核心对象”进行使用,从而降低开发人员使用相关技术的开发步骤和使用难度

Spring八大模块


注意:Spring5版本之后是8个模块。在Spring5中新增了WebFlux模块。
 

  1. Spring Core模块
    1. 这是Spring框架最基础的部分,它提供了依赖注入(DependencyInjection)特征来实现容器对Bean的管理。核心容器的主要组件是 BeanFactory,BeanFactory是工厂模式的一个实现,是任何Spring应用的核心。它使用IoC将应用配置和依赖从实际的应用代码中分离出来。
  1. Spring Context模块
    1. 如果说核心模块中的BeanFactory使Spring成为容器的话,那么上下文模块就是Spring成为框架的原因。
      这个模块扩展了BeanFactory,增加了对国际化(I18N)消息、事件传播、验证的支持。另外提供了许多企业服务,例如电子邮件、JNDI访问、EJB集成、远程以及时序调度(scheduling)服务。也包括了对模版框架例如Velocity和FreeMarker集成的支持
  1. Spring AOP模块
    Spring在它的AOP模块中提供了对面向切面编程的丰富支持,Spring AOP 模块为基于 Spring 的应用程序中的对象提供了事务管理服务。通过使用 Spring AOP,不用依赖组件,就可以将声明性事务管理集成到应用程序中,可以自定义拦截器、切点、日志等操作。
  2. Spring DAO模块
    提供了一个JDBC的抽象层和异常层次结构,消除了烦琐的JDBC编码和数据库厂商特有的错误代码解析,用于简化JDBC。
  3. Spring ORM模块
    Spring提供了ORM模块。Spring并不试图实现它自己的ORM解决方案,而是为几种流行的ORM框架提供了集成方案,包括Hibernate、JDO和iBATIS SQL映射,这些都遵从 Spring 的通用事务和 DAO 异常层次结构。
  4. Spring Web MVC模块
    Spring为构建Web应用提供了一个功能全面的MVC框架。虽然Spring可以很容易地与其它MVC框架集成,例如Struts,但Spring的MVC框架使用IoC对控制逻辑和业务对象提供了完全的分离。
  5. Spring WebFlux模块
    Spring Framework 中包含的原始 Web 框架 Spring Web MVC 是专门为 Servlet API 和 Servlet 容器构建的。反应式堆栈 Web 框架 Spring WebFlux 是在 5.0 版的后期添加的。它是完全非阻塞的,支持反应式流(Reactive Stream)背压,并在Netty,Undertow和Servlet 3.1+容器等服务器上运行。
     

  1. Spring Web模块
    1. Web 上下文模块建立在应用程序上下文模块之上,为基于 Web 的应用程序提供了上下文,提供了Spring和其它Web框架的集成,比如Struts、WebWork。还提供了一些面向服务支持,例如:实现文件上传的multipart请求。

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

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

相关文章

VMware Esxi安装群辉系统

群晖的网络存储产品具有强大的操作系统,提供了各种应用程序和服务,包括文件共享、数据备份、多媒体管理、远程访问等。用户可以通过简单直观的界面来管理他们的存储设备,并且可以根据自己的需求扩展设备的功能。总的来说,群晖的产…

每日一题(leetcode1026):节点与其祖先的最大差值--dfs

考虑到只能计算祖先之间的节点差而不能计算兄弟之间的节点差,所以思考使用dfs来解决该题。 /*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* TreeNode *right;* TreeNode() : val(0), left(nullptr), ri…

bugku-misc 啊哒

拿到题目得到一张图片 尝试查看属性看到照相机型号 应该是加密字符,用010打开图片查看源码 文件结尾看到50 4B,是压缩包形式并且看到flag.txt 猜测是文件包含 kali用foremost尝试分离图片 得到zip文件,打开显示需要密码 想到一开始图片属…

搭建python编译环境

目录 1.安装依赖包 2.安装失败进行换源 3. 更新系统 通过C 语言调用 Python 代码,需要先安装 libpython3 的 dev 依赖库(不同的 ubuntu 版本下, python 版本 可能会有差异, 比如ubuntu 22.04 里是 libpython3.10-dev &#xff09…

Cypress自动化测试开发指南!

cypress是基于JavaScript语言为编写语言的自动化测试开发工具,配合使用cucumber测试开发框架,以node.js为服务进程,可以简单的帮助测试人员完成需要人工手点的所有页面人机交互操作,可以模拟键盘和鼠标输入,快捷完成ca…

未来的技术发展趋势

文章目录 前言一、人工智能技术势必聚焦安全能力二、单云环境逐渐让位于多云环境三、后量子密码或将在美大范围普及总结前言 2023 年,与网络空间安全息息相关的人工智能等技术发展迅猛,新的信息安全时代已然拉开大幕。在目睹了 ChatGPT、“星链”和量子通信等技术展现出的巨…

血细胞检测数据集 | 用于血细胞计数+检测的小规模数据集_已经整理成VOC格式_总共410张图

项目应用场景 面向血细胞检测计数数据集,已经整理成 VOC 格式,可以直接用于目标检测算法的训练,如 YOLO 等目标检测算法的训练。血细胞检测数据集图片质量好,可直接训练出一个血细胞检测模型,或者作为血细胞检测数据集…

头盔检测 | 基于Caffe-SSD目标检测算法实现的建筑工地头盔检测

项目应用场景 面向建筑工地头盔检测场景,使用深度学习 Caffe SSD 目标检测算法,基于 C 实现。 项目效果 项目细节 > 具体参见项目 README.md (1) 安装 Caffe SSD(2) 执行训练 sh examples/Hardhat/SSD300/train_SSD300.sh (3) 部署算法 项目获取 h…

Mysql索引总结(1)

文章目录 InnoDB索引与MyISAM索引实现的区别是什么?一个表中如果没有创建索引,那么还会创建B树吗?B树索引实现原理(数据结构) InnoDB索引与MyISAM索引实现的区别是什么? MyISAM的索引方式都是非聚簇的&…

前端学习之DOM编程案例:全选反选案例

代码 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>全选反选</title> </head> <body><input type"checkbox" id"all">全选<ul><li><…

考研||考公||就业||其他?-------愿不再犹豫

大三下了&#xff0c;现在已经开学一个多月了&#xff0c;在上个学期的时候陆陆续续吧周围有的行动早的人已经开始准备考研了&#xff0c;当然这只是下小部分人吧&#xff0c;也有一部分人是寒假可能就开始了&#xff0c;更多的则是开学的时候&#xff0c;我的直观感受是图书馆…

【C++】哈希思想的应用(位图、布隆过滤器)及海量数据处理方法

文章目录 前言位图什么是位图简单实现一个自己的位图位图的应用场景 布隆过滤器位图的缺陷及布隆过滤器的提出布隆过滤器的概念简单实现一个自己的布隆过滤器布隆过滤器的优缺点布隆过滤器的应用场景 海量数据处理 前言 哈希思想的在实际中的应用除了哈希表这个数据结构之外还…

【简单讲解下如何Java中文乱码浅析及解决方案】

&#x1f308;个人主页: 程序员不想敲代码啊 &#x1f3c6;CSDN优质创作者&#xff0c;CSDN实力新星&#xff0c;CSDN博客专家 &#x1f44d;点赞⭐评论⭐收藏 &#x1f91d;希望本文对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出指正&#xff0c;让我们共…

“三步走”带你拿下C++类与对象(上)

本篇主要介绍了类的引入及其定义、类的访问限定符及封装、类的作用域和实例化、类的对象大小计算等内容。初心是为了让读者能够理解并熟悉类与对象的相关内容。 一、类的引入 类&#xff0c;就是类型。它是c中的一个概念&#xff0c;是把c中的结构体进行了升级同时有兼容c中结…

基于springboot的社区医疗服务系统

文章目录 项目介绍主要功能截图&#xff1a;部分代码展示设计总结项目获取方式 &#x1f345; 作者主页&#xff1a;超级无敌暴龙战士塔塔开 &#x1f345; 简介&#xff1a;Java领域优质创作者&#x1f3c6;、 简历模板、学习资料、面试题库【关注我&#xff0c;都给你】 &…

Web题记

反序列化补充知识&#xff1a; private变量会被序列化为&#xff1a;\x00类名\x00变量名 protected变量会被序列化为: \x00\*\x00变量名 public变量会被序列化为&#xff1a;变量名web254 这个逻辑不难&#xff0c;自己刚看的时候还奇怪是不是自己哪里想错了&#xff0c;因为…

【STM32】ST-LINK 下载时遇到的问题

如果出现“ST-Link USB communication error”ST-Link USB通信错误&#xff0c;则需要启动STM32 ST-LINK Utility&#xff0c;点击【ST-LINK】->【Firmaware】更新固件&#xff0c;然后打开Kei&#xff0c;点击魔术棒->->Debug->Settings&#xff0c;开到出现类似“…

正确使用@Autowired

目录 一、前言二、跟着官方文档&#xff0c;学习正确使用Autowired0、实验环境1、通过构造方法进行注入1.1 问题1&#xff1a;那万一没有这个CustomerPreferenceDao对象&#xff0c;会报错吗&#xff1f; 2、通过setter方法注入3、通过方法注入&#xff08;这个方法可以是任意名…

蓝桥杯每日一题:斐波那契(矩阵乘法)

在斐波那契数列中&#xff0c;Fib00,Fib11,FibnFibn−1Fibn−2(n>1) 给定整数 n&#xff0c;求 Fibnmod10000。 输入格式 输入包含不超过 100100 组测试用例。 每个测试用例占一行&#xff0c;包含一个整数 当输入用例 n−1时&#xff0c;表示输入终止&#xff0c;且该…

实现Hello Qt 程序

&#x1f40c;博主主页&#xff1a;&#x1f40c;​倔强的大蜗牛&#x1f40c;​ &#x1f4da;专栏分类&#xff1a;QT❤️感谢大家点赞&#x1f44d;收藏⭐评论✍️ 目录 一、使用 "按钮" 实现 1、纯代码方式实现 2、可视化操作实现 &#xff08;1&#xff09…