(一)Spring教程——Spring框架简介

embedded/2024/9/18 12:07:45/ 标签: spring, java, 后端, intellij-idea, idea, intellij idea

        Spring框架是Java平台的一个开源的全栈应用程序框架,一般被称作Spring。Spring框架的核心特性是依赖注入(DI)与面向切面的编程(AOP),Spring可以看成是一个控制反转的容器。

        Spring框架由20多个模块组成。这些模块可以分成几个大的层次:核心容器、数据访问/集成、Web、AOP(面向切面编程)、工具和测试等。开发人员可以根据需要选择相应模块进行使用,模块化的结构很容易与其他框架一起集成使用。

        Spring框架于2004年发布,至今已经发布了6个版本,各个版本的主要特性如下所示:

1.Spring 1

        Spring Framework 1.0 final只包含一个完整的项目,所有的功能都集成在一个项目中,包含了核心的IoC、AOP,也包含了诸多功能,例如JDBC、Mail、ORM、事务、定时任务、Spring MVC等。而Spring 1版本已经支持很多第三方的框架,例如Hibernate、iBatis(MyBatis的前身)、模板引擎等。

2.Spring 2

        Spring 2.0新增的特性包括:具有可扩展的XML配置功能(简化XML配置)、支持基于注解的配置、支持Java5、支持额外的Ioc容器扩展点、支持动态语言(Bean Shell)。

        Spring 2.5新增的特性包括:支持Java 6和Java EE 5、全面支持注释依赖注入、支持自动检测和兼容组件的类路径。Spring 2.5框架的所有jar包都是兼容OSGi的,可以简化OSGi环境下对Spring 2.5的使用。

3.Spring 3

        Spring 3.0增加了许多重要特性,如重组模块系统、支持Spring表达式语言、基于Java Bean配置、支持嵌入式数据库模型验证/REST支持和Java EE 6的支持。

4.Spring 4

        Spring 4.0是Spring框架的一大进步,它包含了对Java 8的全面支持,包括支持Lambda表达式的使用,拥有更高的第三方库依赖性,支持@Scheduled和@PropertySource重复注解,也支持Optional语法。

        Spring 4的核心容器也增加了对泛型的依赖注入、Map的依赖注入、Lazy延迟依赖的注入、List/数组注入和Condition条件注解注入的支持。

        Spring 4对CGLib动态代理类进行了增强,支持使用Groovy DSL来进行Bean定义配置,并且为了方便Restful开发,引入了RestController注解器注解,同时还增加了一个AsyncRestTemplate,以此来支持Rest客户端的异步无阻塞请求,Spring 4也增加了对WebSocket和泛型的支持。

5.Spring 5

        Spring 5.0重点加强了对函数式编程、响应式程序设计的支持,是一个非常大的进步。Spring 5.0对运行环境的要求是Java 8以上。Spring 5.0开始支持Java EE 7。Spring 5.0重构了源码,部分功能可以使用Lambda表达式实现,新增了Spring Web Flux框架(一个高性能、响应式、异步的Web框架)、升级了Spring MVC、增加了对最新的API(Jackson等)和Kotlin的支持等。

6.Spring 6

        2022年11月发布的Spring 6.0对Spring核心框架做了大量修订。运行Spring 6的最低环境要求是JDK 17。Spring 6主要进行了如下升级:将javax命名空间迁移到了Jakarta命名空间,支持Jakarta EE 9+、最新的Web容器(如Tomcat 10.1)和最新的持久层框架(如Hibernate ORM 6.1);提供了基于@HttpExchange服务接口的HTTP接口客户端;移除了部分过时的Servlet组件,例如Commons FileUpload、FreeMarker JSP等。


http://www.ppmy.cn/embedded/40891.html

相关文章

基于python的大麦网自动抢票工具的设计与实现

基于python的大麦网自动抢票工具的设计与实现 Design and Implementation of Da Mai Net Ticket Grabbing tool based on Python 完整下载链接:基于python的大麦网自动抢票工具的设计与实现 文章目录 基于python的大麦网自动抢票工具的设计与实现摘要第一章 引言1.1 研究背景…

c# - - - winform程序四个角添加圆角效果

winform 给窗体四个角添加圆角效果。 在窗体 Load 事件中添加如下代码: // 创建了一个圆角矩形的路径,并将其设置为控件的形状 System.Drawing.Drawing2D.GraphicsPath path new System.Drawing.Drawing2D.GraphicsPath(); int radius 30; path.AddAr…

vue3速览

在您的Vue.js 3应用中,createApp 是用于创建一个Vue应用实例的函数。您已经正确地引入了它并开始创建应用,但目前根组件内部是空的。下面我将为您展示一个更完整的例子,说明如何设置根组件的模板、数据、方法等选项,并挂载到DOM上…

springboot lua检查redis库存

需求 最近需求需要实现检查多个马戏场次下的座位等席对应库存渠道的库存余量,考虑到性能,决定采用Lua脚本实现库存检查。 数据结构 库存层级结构 redis库存hash类型结构 实现 lua脚本 --- 字符串分割为数组 local function split(str, char)local…

Python 自动化脚本系列:第1集

昨天写了一篇介绍如何使用Python实现自动化任务的,文章末尾介绍了一个简单的自动化脚本,因此今天编号从2开始。顺便附上昨天的文章链接: Python 自动化脚本系列:介绍 欢迎关注博主,持续输出更多Python相关内容&#…

计算机网络教材——谢希仁教材与配套PPT课件和《计算机网络——自顶向下方法》

教材链接: https://pan.baidu.com/s/1MUkgTVNMvhFdkGxAd0U7Ew?pwdn3g4 提取码: n3g4 ppt资源:课程包列表 (51zhy.cn) 计算机网络——自顶向下方法(资源在下面的评论区里):计算机网络自顶向下方法第7版中文PDF习题参考 - 哔哩哔…

python的面向对象

python的面向对象 定义类 class 关键字 class 类名(父类):属性1 值1属性2 值2方法1()方法2()方法3()init构造函数 class 类名(父类):def __init__(self, 参数列表):self.属性 值init第一个参数是self,代表当前对象 在init方法内部,可以把各种属性…

(done) 什么是马尔可夫链?Markov Chain

参考视频:https://www.bilibili.com/video/BV1ko4y1P7Zv/?spm_id_from333.337.search-card.all.click&vd_source7a1a0bc74158c6993c7355c5490fc600 如下图所示,马尔可夫链条实际上就是 “状态机”,只不过状态机里不同状态之间的边上是 “…

软件2班20240513

第三次作业 package com.yanyu;import java.sql.*; import java.util.ResourceBundle;public class JDBCTest01 {public static void main(String[] args) {ResourceBundle bundle ResourceBundle.getBundle("com/resources/db");// ctrl alt vString driver …

k8s 使用Docker和Containerd对比分析

目录 k8s 使用Docker和Containerd对比分析 互动1:docker build构建的镜像和containerd镜像通用吗? 互动2:k8s1.24之前版本和1.24及1.24之后版本区别? k8s 使用Docker和Containerd对比分析 如果你使用Docker作为K8S容器运行时的…

网络安全之动态路由入门

动态路由协议有几种:RIP,OSPF,EIGRP,ISIS,BGP 动态路由工作原理: 例如: 若A区域运行的协议与B中的不同,数据从1到4走A区域还是走B区域,则看A,B两区域的优先级(priority preference或AD——管理距离&#…

【Nginx】如何在 Nginx 中阻止来自特定国家的 IP 地址访问

文章目录 前言一、准备工作二、查看 Nginx 服务器都拥有哪些模块2.1 先查看本地nginx是否有ngx_http_geoip2模块2.2 安装nginx并配置ngx_http_geoip2模块2.2.1下载所需版本的nginx到服务器2.2.2 先安装所需依赖2.2.3 解压文件2.2.4 下载ngx_http_geoip2模块2.2.5 编译安装nginx…

软件测试之如何管理团队

前言 在软件开发过程中,软件测试团队的管理至关重要。有效的团队管理可以提高测试质量、加快发布速度并确保产品的稳定性。本文将讨论如何管理软件测试团队,以便提供一些指导和最佳实践。 设定清晰的目标和期望 在管理软件测试团队时,首先…

SpringCloud面试题

SpringCloud常见组件有哪些 注册中心组件:Eureka、Nacos 负载均衡组件:Ribbon 远程调用组件:OpenFeign 网关组件:Zuul、Gateway 服务保护组件:Hystrix、Sentinel 服务配置管理组件:SpringCloudConfig、Nac…

可编程 IP 新星 Story Protocol 何以引领链上文艺复兴浪潮?

当前,随着 Web3 行业发展进入全新阶段,与生成式人工智能(AIGC)技术融合正在创造潜力新星项目。也是目前的互联网生态下,任何普通民众都有权利创作高质量的音乐、艺术、散文和视频内容,带来了用户生成内容&a…

【嵌入式开发 Linux 常用命令系列 7.6 -- sed 替换指定字符串】

请阅读【嵌入式开发学习必备专栏】 文章目录 sed 替换指定字符串 sed 替换指定字符串 背景: 找到当前目录下所有的.h 和 .c 文件 将他们中的字符 print_log替换为 demo_log 可以使用find命令结合sed命令在Linux环境下完成这项任务。下面是一个命令行示例&#xff…

房屋出租管理系统需求分析及功能介绍

房屋租赁管理系统适用于写字楼、办公楼、厂区、园区、商城、公寓等商办商业不动产的租赁管理及租赁营销;提供资产管理,合同管理,租赁管理, 物业管理,门禁管理等一体化的运营管理平台,提高项目方管理运营效率…

记录HCIP学习过程中的疑问

1、查看协议路由表、本地核心路由表、FIB表的命令??? 查看FIB表:display fib [ slot-id ] 2、最优路由选择,当达到目的地址的路由有多条时,本地核心路由 与FIB表的情况??&#xf…

学习前端第三十四天(call,apply,函数绑定;箭头函数;对象属性配置)

一、call、apply function fn(x, y) { console.log("hello", x, y, this) }; 1.call方法 作用:调用后执行函数,可以给“this”传参数 fn.call({ a: 1 }, 1, 2,); 2.apply方法 第一个给“this”传参数,第二个参数需要是数组形式…

MongoDB聚合运算符:$toHashedIndexKey

MongoDB聚合运算符:$toHashedIndexKey 文章目录 MongoDB聚合运算符:$toHashedIndexKey语法举例角度的双曲正切 $toHashedIndexKey计算并返回输入表达式的哈希值,其使用的哈希函数与MongoDB创建哈希索引相同。哈希函数将键值或字符串映射到固定…