Java——Spring常见的基础知识

news2025/7/19 14:23:33

1、Spring

答:Spring 总共大约有 20 个模块, 由 1300 多个不同的文件构成。 而这些组件被分别整合在核心容器(Core Container)AOP(Aspect Oriented Programming)和设备支持(Instrmentation) 、数据访问与集成(Data Access/Integeration)Web、 消息(Messaging)Test 等 6 个模块中。 以下是 Spring 5 的模块结构图:
在这里插入图片描述

  • spring core 提供了框架的基本组成部分,包括控制反转 (Inversion of Control,IOC) 和依赖注入 (Dependency Injection,DI) 功能;
  • spring beans 提供了BeanFactory,是工厂模式的一个经典实现,Spring将管理对象称为Bean
  • spring context 构建于core 封装包基础上的 context 封装包,提供了一种框架式的对象访问方法
  • spring jdbc 提供了一个JDBC的抽象层,消除了烦琐的 JDBC 编码和数据库厂商特有的错误代码解析, 用于简化JDBC
  • spring aop 提供了面向切面的编程实现,让你可以自定义拦截器、切点等;
  • spring Web 提供了针对 Web 开发的集成特性,例如文件上传,利用 servlet listeners 进行 IOC容器初始化和针对 WebApplicationContext
  • spring test 主要为测试提供支持的,支持使用JUnitTestNG对Spring组件进行单元测试和集成测试。

2、Spring 框架中都用到了哪些设计模式?

  • 工厂模式: Spring IOC核心的设计模式的思想体现就是工厂模式,他自己这个IOC容器就是一个大的工厂,把所有的Bean实例都给放在了Spring容器里,如果你要使用Bean,就找Spring容器就可以了,自己不用创建对象了;
  • 单例模式:Spring中的Bean默认作用域就是 singleton 都是单例的;
  • 代理模式:Spring AOP功能的实现就用到了代理模式,Spring AOP生成一些代理对象,做一定的增强,然后我们对目标对象的访问就是基于这个代理对象去访问。SpringAOP功能用到了 JDK 的动态代理CGLIB 字节码生成技术;
  • 模板方法: 用来解决代码重复问题。Spring中的jdbcTemplatehibernateTemplate等以Template结尾的对数据库操作的类,它们就使用到了模板模式;
  • 观察者模式: 定义对象键一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知被制动更新,如Springlistener的实现ApplicationListener
  • 适配器模式: Spring AOP 的增强或通知 (Advice) 使用到了适配器模式Spring MVC中也是用到了适配器模式适配Controller

3、Spring的核心容器(Spring Context应用上下文)模块

答:Bean 工厂是工厂模式的一个实现,提供了控制反转功能,用来把应用的配置和依赖从真正的应用代码中分离。最常用的就是org.springframework.beans.factory.xml.XmlBeanFactory ,它根据 XML 文件中的定义加载 Beans。该容器从XML文件读取配置元数据并用它去创建一个完全配置的系统或应用。

在这里插入图片描述

  • 简单点理解,就是将需要Spring IOC容器帮我们管理的对象Spring中我们称对象为Bean)和BeanBean之间的协作关系,是基于xmlJava注解的形式配置好,然后通过Spring应用上下文将其加载进Spring IOC容器中,这样容器就能给我们提供我们想要的对象管理服务。
  • 通俗点理解,就是我们需要一个对象,来将Spring配置文件中配置好的Bean关系,加载到Spring IOC容器中,而Spring应用上下文就充当了这样的角色。
  • 所以我们可以说Spring上下文,就是将需要Spring帮我们管理的对象加载到Spring IOC容器中的一种容器对象。

4、Spring框架中有哪些不同类型的事件?

  • 上下文更新事件(ContextRefreshedEvent): 在调用ConfigurableApplicationContext 接口中的refresh()方法时被触发。
  • 上下文开始事件(ContextStartedEvent): 当容器调用ConfigurableApplicationContextStart()方法开始/重新开始容器时触发该事件。
  • 上下文停止事件(ContextStoppedEvent): 当容器调用ConfigurableApplicationContextStop()方法停止容器时触发该事件。
  • 上下文关闭事件(ContextClosedEvent):ApplicationContext被关闭时触发该事件。容器被关闭时,其管理的所有单例Bean都被销毁。
  • 请求处理事件(RequestHandledEvent):Web应用中,当一个Http请求(request)结束触发该事件。如果一个bean实现了ApplicationListener接口,当一个ApplicationEvent 被发布以后Bean会自动被通知。

5、Spring 应用程序有哪些不同组件?

  • 接口: 定义功能。
  • Bean 类: 它包含属性,settergetter 方法,函数等。
  • Bean 配置文件: 包含类的信息以及如何配置它们。
  • Spring 面向切面编程( AOP ): 提供面向切面编程的功能。
  • 用户程序: 它使用接口。

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

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

相关文章

列式数据库ClickHouse,大宽表聚合、报表一下全搞定

一、前言 现在数据库的种类也是特别的多,大致的类别包括: 关系型数据库( MySQL、Oracle、PostgreSQL)非关系型数据库(Redis、MongoDB、Cassandra、Neo4j)全文搜索引擎和分布式文档存储系统(El…

阿里云绝地反击:老用户购买云服务器99元一年

2023阿里云服务器优惠活动来了,以前一直是腾讯云比阿里云优惠,阿里云绝地反击,放开老用户购买资格,99元服务器老用户可以买,并且享受99元续费,阿腾云亲测可行,大家抓紧吧,数量不多&a…

【LeetCode:80. 删除有序数组中的重复项 II | 双指针】

🚀 算法题 🚀 🌲 算法刷题专栏 | 面试必备算法 | 面试高频算法 🍀 🌲 越难的东西,越要努力坚持,因为它具有很高的价值,算法就是这样✨ 🌲 作者简介:硕风和炜,…

【排序算法】 计数排序(非比较排序)详解!了解哈希思想!

🎥 屿小夏 : 个人主页 🔥个人专栏 : 算法—排序篇 🌄 莫道桑榆晚,为霞尚满天! 文章目录 📑前言🌤️计数排序的概念☁️什么是计数排序?☁️计数排序思想⭐绝对…

免费低代码软件:最佳选型推荐

低代码是什么?他是鉴于0代码和高代码之间的概念,主要强调用户无需专业的代码知识即可完成一个成熟的应用程序的搭建。而市场上众多的低代码软件,如何选择一个合适自身企业的产品呢?小编建议不妨先试试免费低代码软件Zoho Creator。…

栅格及波段融合工具

支持大部分栅格数据的波段融合,可以将不同栅格数据的任意波段融合到一个栅格文件里,可以选择融合的波段。 下载地址: https://download.csdn.net/download/qq_35582643/88490703?spm1001.2014.3001.5503 运行方式: 输入…

万达商业携手蜂鸟视图实现CAD图纸一键转换三维地图

室内三维电子地图在很多行业已经形成了广泛应用,特别是商业地产领域的需求持续增长。然而,应用方一直面临挑战的难题是传统的地图绘制工作的繁重和难以满足时效性。为应对这一难题,在2022年蜂鸟视图推出CAD快速转换工具,能够将主流…

Python和urllib库下载网页内容

首先我们需要导入urllib库,然后使用urllib库的urlopen()函数来打开网页。urlopen()函数的第一个参数是需要下载的网页的URL,第二个参数是服务器的URL和端口。 import urllib.request ​ # 打开网页 url proxy_url response urllib.request.urlopen…

记一次 .NET 某工厂无人车调度系统 线程爆高分析

一:背景 1. 讲故事 前些天有位朋友找到我,说他程序中的线程数爆高,让我帮忙看下怎么回事,这种线程数爆高的情况找问题相对比较容易,就让朋友丢一个dump给我,看看便知。 二:为什么会爆高 1. …

【java学习—十一】泛型(1)

文章目录 1. 为什么要有泛型Generic2. 泛型怎么用2.1. 泛型类2.2. 泛型接口2.3. 泛型方法 3. 泛型通配符3.1. 通配符3.2. 有限制的通配符 1. 为什么要有泛型Generic 泛型,JDK1.5新加入的,解决数据类型的安全性问题,其主要原理是在类声明时通过…

精选10款Python可视化工具,请查收

今天我们会介绍一下10个适用于多个学科的Python数据可视化库,其中有名气很大的也有鲜为人知的。 1、matplotlib matplotlib 是Python可视化程序库的泰斗。经过十几年它仍然是Python使用者最常用的画图库。它的设计和在1980年代被设计的商业化程序语言MATLAB非常接近…

的修工单管理系统好用吗?工单系统应该怎么选?

在当今的数字化时代,企业运营效率的高低往往取决于其内部管理工具的先进性和实用性。工单管理系统作为企业运营中的重要工具,其作用日益凸显。市场上存在许多工单管理系统,但“的修”以其独特的产品差异化和优势,在竞争中独树一帜…

Linux C语言进阶-D3~D4字符串处理函数

求字符串长度函数strlen、字符串拷贝strcpy、字符串连接strcat、字符串比较strcmp 头文件<string.h> 求字符串长度strlen函数 1、计算字符串长度&#xff0c;并且遇到\0结束&#xff0c;返回字符串长度 2、 计算字符串长度&#xff0c;遇到转义字符&#xff0c;\不算在内…

基于ASP.NET MVC + Bootstrap的仓库管理系统

基于ASP.NET MVC Bootstrap的仓库管理系统。源码亲测可用&#xff0c;含有简单的说明文档。 适合单仓库&#xff0c;基本的仓库入库管理&#xff0c;出库管理&#xff0c;盘点&#xff0c;报损&#xff0c;移库&#xff0c;库位等管理&#xff0c;有着可视化图表。 系统采用Bo…

消息的订阅与发布机制

消息的订阅与发布机制 功能&#xff1a;可完成任意组件之间数据的传递&#xff08;同全局事件总线功能一样&#xff09;区别&#xff1a;与全局事件总线相比&#xff0c;消息的订阅和发布机制需要使用第三方库。我用的是pubsub-js库&#xff0c;其他的第三方库也可以使用&#…

如何在崩坏3rd游戏中使用万安单机单窗口软件进行游戏道具收购?

如何在崩坏3rd游戏中使用窗口软件进行游戏道具收购&#xff1f; 首先&#xff0c;定义在崩坏3rd游戏中&#xff0c;使用窗口软件进行游戏道具收购涉及到账户绑定、软件下载、游戏内购买等步骤。 我在玩崩坏3rd游戏时&#xff0c;使用了窗口软件成功完成了游戏道具的收购。 步骤…

【产品体验】OA办公系统

一、演示地址 http://admin.dianshixinxi.com:90/index 二、办公管理功能 1.我的待办&#xff1a;当前登录用户&#xff0c;办理任务 2.通知公告&#xff1a;通知与公告&#xff0c;已发布通知公告会显示在首页 3.自定义表单&#xff1a;自定义表单&#xff0c;托拉拽的形式…

【Python 零基础入门】Numpy 常用函数

【Python 零基础入门】内容补充 3 Numpy 常用函数 概述Numpy 数组创建np.arangenp.linspace 数组操作reshapeflattenconcatenatesplitvstackhstack 数学运算add 相加subtract 相减multiply 相乘divide 相除 通用函数np.sqrt 平方根np.log 对数np.exp 指数np.sin 正弦 概述 Num…

WPS文件恢复怎么做?记得掌握这5个方法!

“我保存在WPS里的部分文件丢失了&#xff0c;大家快帮我想想办法吧&#xff0c;有什么方法可以恢复这些WPS里的文件吗&#xff1f;真的很重要&#xff01;” WPS Office是一款流行的办公套件&#xff0c;给用户在办公和学习方面提供了很多的便利。但在整理文件时&#xff0c;我…

CV计算机视觉每日开源代码Paper with code速览-2023.10.30

精华置顶 墙裂推荐&#xff01;小白如何1个月系统学习CV核心知识&#xff1a;链接 点击CV计算机视觉&#xff0c;关注更多CV干货 论文已打包&#xff0c;点击进入—>下载界面 点击加入—>CV计算机视觉交流群 1.【语义分割】&#xff08;NeurIPS2023&#xff09;SmooSe…