Spring 6 第1章——概述

news2025/1/17 18:07:34

一.Spring是什么

  1. Spring是一款主流的Java EE轻量级(体积小、不需要依赖其它组件)开源框架
  2. Spring的目的是用于简化Java企业级应用的开发难度和开发周期
  3. Spring的用途不仅限于服务端的开发,从简单性、可测试性和松耦合的角度而言,任何Java应用都可以从Spring中受益
  4. Spring框架除了自己提供功能外,还提供整合其它技术和框架的能力

二、Spring的狭义和广义

  1. 广义上的Spring:Spring技术栈
    1. 广义上的Spring,泛指以Spring Framework为核心的Spring技术栈
    2. 经过十多年的发展,Spring已经不再是一个单纯的应用框架,而是逐渐发展成为一个由多个不同的子项目(模块)组成的成熟技术,例如,Spring Framework、Spring MVC、Spring Boot、Spring Cloud、Spring Data、Spring Security等,其中Spring Framework是其他子项目的基础
  2. 狭义上的Spring:Spring Framework
    1. 狭义的Spring特指Spring Framework,通常我们将它称为Spring框架
    2. Spring有两个最核心模块:(1)IoC:Inverse if Control,翻译为“控制反转”,指把创建对象过程交给Spring进行管理(2)AOP:Aspect Oriented Programming的简写,翻译为“面向切面编程”。AOP用来封装多个类的公共行为,将那些与业务无关,却为业务模块所共用的逻辑封装起来,减少系统的重复代码,降低模块间的耦合度。另外,AOP还解决一些系统层面上的问题,比如:日志、事务、权限等

三、Spring Framework特点

  1. 非侵入式:使用 Spring Framework 开发应用程序时,Spring 对应用程序本身的结构影响非常小。对领域模型可以做到零污染;对功能性组件也只需要使用几个简单的注解进行标记,完全不会破坏原有结构,反而能将组件结构进一步简化。这就使得基于 Spring Framework 开发应用程序时结构清晰、简洁优雅
  2. 控制反转:IoC——Inversion of Control,翻转资源获取方向。把自己创建资源、向环境索取资源变成环境将资源准备好,我们享受资源注入
  3. 面向切面编程:AOP——Aspect Oriented Programming,在不修改源代码的基础上增强代码功能
  4. 容器:Spring IoC是一个容器,因为它包含并且管理组件对象的生命周期。组件享受到了容器化的管理,替程序员屏蔽了组件创建过程中的大量细节,极大的降低了使用门槛,大幅度提高了开发效率
  5. 组件化:Spring实现了使用简单的组件配置组合成一个复杂的应用。在Spring中可以使用XML和Java注解组合这些对象。这使得我们可以基于一个个功能明确、边界清晰的组件有条不紊的搭建超大型复杂应用系统
  6. 一站式:在IoC和AOP的基础上可以整合各种企业应用的开源框架和优秀的第三方类库。而且 Spring 旗下的项目已经覆盖了广泛领域,很多方面的功能性需求可以在 Spring Framework 的基础上全部使用 Spring 来实现

四、Spring模块组成

  1. 该图中包含了Spring框架的所有模块,这些模块可以满足一切企业级应用开发的需求,在开发过程中可以根据需要有选择性地使用所需要的模块
  2. Spring Core(核心容器):spring core提供了IOC,DI,Bean配置装载创建的核心实现。核心概念: Beans、BeanFactory、BeanDefinitions、ApplicationContext
    1. spring-core :IOC和DI的基本实现

    2. spring-beans:BeanFactory和Bean的装配管理(BeanFactory)

    3. spring-context:Spring context上下文,即IOC容器(AppliactionContext)

    4. spring-expression:spring表达式语言

  3. Spring AOP(面向切面编程)
    1. spring-aop:面向切面编程的应用模块,整合ASM,CGLib,JDK Proxy
    2. spring-aspects:集成AspectJ,AOP应用框架
    3. spring-instrument:动态Class Loading模块
  4. Spring Data Access(数据访问)
    1. spring-jdbc:spring对JDBC的封装,用于简化jdbc操作
    2. spring-orm:java对象与数据库数据的映射框架
    3. spring-oxm:对象与xml文件的映射框架
    4. spring-jms: Spring对Java Message Service(java消息服务)的封装,用于服务之间相互通信
    5. spring-tx:spring jdbc事务管理
  5. Spring Web(应用程序)
    1. spring-web:最基础的web支持,建立于spring-context之上,通过servlet或listener来初始化IOC容器
    2. spring-webmvc:实现web mvc
    3. spring-websocket:与前端的全双工通信协议
    4. spring-webflux:Spring 5.0提供的,用于取代传统java servlet,非阻塞式Reactive Web框架,异步,非阻塞,事件驱动的服务
  6. Spring Message(消息传递)
    1. Spring-messaging:spring 4.0提供的,为Spring集成一些基础的报文传送服务
  7. Spring test(测试)
    1. spring-test:集成测试支持,主要是对junit的封装

五、Spring6特点

(1)版本要求

  1. Spring6要求JDK最低版本是JDK17

(2)本课程软件版本

  1. IDEA开发工具:2022.1.2
  2. JDK:java17
  3. Spring:6.0.2

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

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

相关文章

基于vite+vue3+mapbox-gl从零搭建一个项目

下面是基于 Vite、Vue 3 和 Mapbox GL 从零搭建一个项目的完整步骤,包括环境搭建、依赖安装、配置和代码示例。 1. 初始化项目 首先,使用 Vite 快速创建一个 Vue 3 项目: npm create vuelatest vue3-mapboxgl --template vue cd vue3-mapbo…

Kibana:ES|QL 编辑器简介

作者:来自 Elastic drewdaemon ES|QL 很重要 💪 正如你可能已经听说的那样,ES|QL 是 Elastic 的新查询语言。我们对 ES|QL 寄予厚望。它已经很出色了,但随着时间的推移,它将成为与 Elasticsearch 中的数据交互的最强大…

使用葡萄城+vue实现Excel

最终实现效果如下 包含增加复选框 设置公式 设置背景颜色等,代码实在太多 有需要可留言 第一步:创建表头 请使用官网提供的网址:在线 Excel 编辑器 | SpreadJS 在线表格编辑器 1.点击下方号,创建一个新的sheet页 默认新创建的she…

[系统安全] 六十一.恶意软件分析 (12)LLM赋能Lark工具提取XLM代码的抽象语法树(初探)

您可能之前看到过我写的类似文章,为什么还要重复撰写呢?只是想更好地帮助初学者了解病毒逆向分析和系统安全,更加成体系且不破坏之前的系列。因此,我重新开设了这个专栏,准备系统整理和深入学习系统安全、逆向分析和恶意代码检测,“系统安全”系列文章会更加聚焦,更加系…

Linux浅谈——管道、网络配置和客户端软件的使用

目录 一、管道 1、管道符 2、过滤功能 3、特殊功能 4、扩展处理 5、xargs命令扩展 二、网络配置 1、ifconfig查看网络信息 2、配置文件详解 网卡配置文件位置 3、systemctl查看网卡状态 4、systemctl启动/重启/停止网卡 三、客户端软件 1、什么是SSH 2、常用SSH终…

Oracle 深入学习 Part12: Managing Indexes (管理索引)

索引的分类 逻辑分类: 单列和多列: 单列索引(single column):对单列数据建立索引。 复合索引(concatenated):对多列数据建立索引。 唯一性: 唯一性(unique…

【网络安全】FortiOS Authentication bypass in Node.js websocket module

文章目录 漏洞说明严重等级影响的产品和解决措施推荐阅读 漏洞说明 FortiOS存在一个使用替代路径或者信道进行身份验证绕过漏洞,可能允许未经身份验证的远程攻击者透过向Node.js WebSocket模块发送特别设计的请求,可能获得超级管理员权限。 Fortinet 官…

GMM高斯混合聚类算法(Matlab)

目录 效果一览基本介绍程序设计参考资料 效果一览 基本介绍 GMM高斯混合聚类算法 matlab2023b语言,一键出图,直接运行 1.代码注释清晰,自行解读容易。 2…输出图例如图所示包括:聚类图(聚类结果图),协方差矩阵类型…

Kutools for Excel 简体中文版 - 官方正版授权

Kutools for Excel 是一款超棒的 Excel 插件,就像给你的 Excel 加了个超能助手。它有 300 多种实用功能,现在还有 AI 帮忙,能把复杂的任务变简单,重复的事儿也能自动搞定,不管是新手还是老手都能用得顺手。有了它&…

计算机数据提取与固定

1.计算机数据的提取与固定 1.课程介绍 电子数据提取与固定、电子数据恢复、电子数据分析。 2.计算机数据提取与固定 数字化时代,计算机和电子设备承载海量素具,这些数据在各类案件调查、事故处理以及合规审计场景扮演关键角色。 3.操作系统定义 操…

VSCode 使用默认profile打开文件

VSCode 本身的定位就是文本编辑器,只是通过各种插件才实现了 IDE 的功能。 如果想要把 VSCode 当作 IDE 和文本编辑器同时使用,就需要注意 profile 切换的问题。 profile 是 VSCode 的一个功能,可以通过多首选项管理不同的环境,比…

Profibus DP转Modbus TCP协议转换网关模块功能详解

Profibus DP 和 Modbus TCP 是两种不同的工业现场总线协议,Profibus DP 常用于制造业自动化领域,而 Modbus TCP 则在工业自动化和楼宇自动化等领域广泛应用。实现 Profibus DP 转 Modbus TCP 功能,通常需要特定的网关设备,以下为你…

镭速大文件传输视频文件预览实现原理

镭速可以支持视频预览,在测试过程中需要大量不同格式的视频,如果直接去找各种格式的视频不太现实,所以就会用到一个视频格式转换的工具ffmpeg,本文将介绍ffmpeg的基本使用方法。FFmpeg 是一个免费开源的音视频处理工具&#xff0c…

keepalived双机热备(LVS+keepalived)实验笔记

目录 前提准备: keepalived1: keepalived2: web1: web2: keepalived介绍 功能特点 工作原理 应用场景 前提准备: 准备4台centos,其中两台为keepalived,两台为webkeepalive…

MySQL(高级特性篇) 02 章——MySQL的数据目录

一、MySQL8的主要目录结构 命令: find / -name mysql 安装好MySQL8之后,我们查看如下的目录结构 (1)数据库文件的存放路径 MySQL数据库文件的存放路径:/var/lib/mysql/MySQL服务器程序在启动时会到文件系统的某个目…

【C++篇】红黑树的实现

目录 前言: 一,红黑树的概念 1.1,红黑树的规则 1.2,红黑树的最长路径 1.3,红黑树的效率分析 二,红黑树的实现 2.1,红黑树的结构 2.2,红黑树的插入 2.2.1,大致过程…

UDP报文格式

UDP是传输层的一个重要协议,他的特性有面向数据报、无连接、不可靠传输、全双工。 下面是UDP报文格式: 1,报头 UDP的报头长度位8个字节,包含源端口、目的端口、长度和校验和,其中每个属性均为两个字节。报头格式为二…

解锁转型密码:不同方向的技能与素质修炼手册

前言:哈喽,大家好,今天给大家分享一篇文章!并提供具体代码帮助大家深入理解,彻底掌握!创作不易,如果能帮助到大家或者给大家一些灵感和启发,欢迎收藏关注哦 💕 目录 解锁…

HTML中最基本的东西

本文内容的标签,将是看懂HTML的最基本之基本 ,是跟您在写文章时候一样内容。一般想掌握极其容易,但是也要懂得如何使用,过目不忘,为手熟尔。才是我们学习的最终目的。其实边看边敲都行,或者是边看边复制粘贴…

NodeJS | 搭建本地/公网服务器 live-server 的使用与安装

目录 介绍 安装 live-server 安装方法 安装后的验证 环境变量问题 Node.js 环境变量未配置正确 全局安装的 live-server 路径未添加到环境变量 运行测试 默认访问主界面 访问文件 报错信息与解决 问题一:未知命令 问题二:拒绝脚本 公网配置…