当前位置: 首页 > news >正文

【Spring】学习Spring框架那点小事儿

Spring作者:Rod Johnson

Rod Johnson 是一位软件开发人员和作家,他在软件开发领域有着广泛的影响力。他出生于澳大利亚,拥有计算机科学和音乐双学位(能写出有优雅的代码一定有艺术细胞)

Rod Johnson 在 2002 年出版了《Expert One-on-One J2EE Design and Development》一书,提出了轻量级容器的概念,为 Spring 框架的诞生奠定了基础。他在 2003 年创建了 Spring 框架,并成立了 SpringSource 公司,专门开发和维护 Spring 框架。SpringSource 公司在 2009 年被 VMware 公司收购,Rod Johnson 也加入了 VMware 公司,继续领导 Spring 框架的开发工作。

除了 Spring 框架,Rod Johnson 还参与了其他一些开源项目,如 Apache Tomcat、Apache Geronimo 等。他还出版了多本关于软件开发的书籍,如《Expert One-on-One J2EE Design and Development》、《J2EE Development without EJB》等。

Rod Johnson 在软件开发领域提出了许多重要的概念和思想,如轻量级容器、依赖注入、AOP 等,这些概念和思想已经被广泛应用于各种软件开发框架中。他的工作对软件开发领域产生了深远的影响,尤其是在 Spring 框架的开发和推广方面。

总之,Rod Johnson 是一位杰出的软件开发人员和作家,他对软件开发领域做出了重要的贡献,尤其是在 Spring 框架的开发和推广方面。

Spring介绍

Spring 框架是一个开源的 Java 应用程序框架,它提供了全面的解决方案,用于开发企业级 Java 应用程序。Spring 框架的核心是一个轻量级的容器,它提供了依赖注入、AOP、事务管理等功能。Spring 框架还提供了许多其他的模块,如 MVC 框架、JDBC 抽象层、ORM 集成、消息传递、Web 服务等,这些模块可以单独使用,也可以组合使用,以满足不同的需求。

Spring 框架的设计理念是“约定优于配置”,这意味着它提供了一套默认的配置,开发人员可以根据需要进行修改。Spring 框架还提供了灵活的配置方式,包括 XML 配置、Java 配置和基于注解的配置。

Spring 框架的优点包括:

  1. 轻量级:Spring 框架是一个轻量级的容器,它不需要大量的资源来运行。

  2. 灵活性:Spring 框架提供了灵活的配置方式,包括 XML 配置、Java 配置和基于注解的配置。

  3. 模块化:Spring 框架提供了许多模块,这些模块可以单独使用,也可以组合使用,以满足不同的需求。

  4. 易于测试:Spring 框架提供了易于测试的 API,可以方便地进行单元测试和集成测试。

  5. 社区支持:Spring 框架有一个庞大的社区,提供了大量的文档、教程和示例代码,可以帮助开发人员快速上手。

Spring 框架的发展历程

  1. 2002年,Rod Johnson 出版了《Expert One-on-One J2EE Design and Development》一书,提出了轻量级容器的概念,为 Spring 框架的诞生奠定了基础。

  2. 2003年,Spring 框架的第一个版本发布,它是一个轻量级的容器,提供了依赖注入、AOP、事务管理等功能。

  3. 2004年,Spring 1.0 发布,它是一个完整的应用程序框架,提供了更多的功能,如 MVC 框架、JDBC 抽象层、ORM 集成等。

  4. 2005年,Spring 1.2 发布,它增加了对 Java 5 的支持,并引入了注解配置。

  5. 2006年,Spring 2.0 发布,它增加了对 Java 5 的全面支持,并引入了基于注解的配置方式。

  6. 2007年,Spring 2.5 发布,它增加了对 Java 6 的支持,并引入了基于注解的依赖注入和 AOP 配置方式。

  7. 2009年,Spring 3.0 发布,它增加了对 Java 7 的支持,并引入了基于 Java 配置的方式。

  8. 2013年,Spring 4.0 发布,它增加了对 Java 8 的支持,并引入了响应式编程模型。

  9. 2017年,Spring 5.0 发布,它增加了对 Java 9 的支持,并引入了响应式编程模型和 WebFlux 框架。

  10. 2020年,Spring 5.3 发布,它增加了对 Java 15 的支持,并引入了更多的功能和改进。

  11. 2022年,Spring 6.0 发布,它增加了对 Java 17 的支持,并引入了更多的功能和改进。

Spring 框架的网站

  1. Spring 官方网站:Spring 官方网站提供了 Spring 框架的详细文档和示例代码,是学习 Spring 框架的最佳资源。  网址:Spring | Home

  2. Baeldung:Baeldung 是一个专注于 Java 和 Spring 框架的博客,提供了大量的教程和示例代码,适合初学者和有经验的开发人员。网址:baeldung

  3. Spring Boot 官方文档:Spring Boot 是 Spring 框架的一个子项目,提供了快速开发 Spring 应用程序的工具和库。Spring Boot 官方文档提供了详细的文档和示例代码,适合初学者和有经验的开发人员。网址:Spring Boot

  4. Spring 中文社区:Spring 中文社区是一个专注于 Spring 框架的中文社区,提供了大量的教程、文章和示例代码,适合中文读者。网址:Spring 中文网 官网

  5. Spring 教程网:Spring 教程网是一个专注于 Spring 框架的中文网站,提供了大量的教程、文章和示例代码,适合初学者和有经验的开发人员。




相关文章:

【Spring】学习Spring框架那点小事儿

Spring作者:Rod Johnson Rod Johnson 是一位软件开发人员和作家,他在软件开发领域有着广泛的影响力。他出生于澳大利亚,拥有计算机科学和音乐双学位(能写出有优雅的代码一定有艺术细胞)。 Rod Johnson 在 2002 年出版…...

L2-035 完全二叉树的层序遍历(Python)

L2-035 完全二叉树的层序遍历 分数 25 全屏浏览 切换布局 作者 陈越 单位 浙江大学 一个二叉树,如果每一个层的结点数都达到最大值,则这个二叉树就是完美二叉树。对于深度为 D 的,有 N 个结点的二叉树,若其结点对应于相同深度…...

get命令使用提交代码

当你想要通过Git提交代码时,以下是一个详细的案例,包括从创建更改到推送到远程仓库的整个过程: 首先,确保你已经在本地仓库目录中进行了需要的更改。 添加更改到暂存区: git add . 这会将所有更改添加到Git的暂存区&…...

矩阵乘积知识

参考:矩阵点乘【矩阵点乘计算公式】_万动力 矩阵乘 矩阵相乘最重要的方法是一般矩阵乘积。它只有在第一个矩阵的列数(column)和第二个矩阵的行数(row)相同时才有意义 [1] 。 哈达码积 别名:矩阵点乘&…...

10、设计模式之外观模式(Facade)

一、什么是外观模式 这个大家一定是经常使用的,外观模式(门面模式)是一种结构型设计模式。它提供一个统一的接口,用于访问子系统中的一组接口,隐藏了系统的复杂性。最简单的应用就是,当controller层的逻辑处…...

小程序APP为什么要选择游戏盾SDK防护DDOS

小程序APP为什么要选择游戏盾SDK防护DDOS?在移动互联网高速发展的今天,小程序APP已经成为了人们日常生活中不可或缺的一部分。无论是购物、娱乐还是社交,小程序APP都为我们提供了极大的便利。然而,随着小程序APP的普及&#xff0c…...

STL之deque容器代码详解

1 基础概念 功能: 双端数组,可以对头端进行插入删除操作。 deque与vector区别: vector对于头部的插入删除效率低,数据量越大,效率越低。 deque相对而言,对头部的插入删除速度回比vector快。 vector访问…...

Liunx文件系统和基础IO

文件系统和基础IO 基础IOc语言基础IO函数当前路径和标准流系统IO系统调用函数重定向FILE文件结构体 在谈缓存区问题理解文件系统初识inode 基础IO c语言基础IO函数 打开与关闭 FILE *fopen(char *filename, const char *mode);选项还可以是 r/w/a 意味着为可读可写打开。 2…...

【Python+Selenium学习系列5】Selenium特殊元素定位之-鼠标悬停操作

前言 Selenium模拟用户在浏览器中的操作,比如点击按钮。在某些场景下,我们需要模拟鼠标悬停的操作,来触发一些隐藏的元素。本文将介绍Python Selenium实现鼠标悬停操作。 鼠标悬停,即当光标与其名称表示的元素重叠时触发的事件&…...

简介:基于 OpenTiny 组件库的 rendereless 无渲染组件架构

在 HAE 自研阶段,我们实现的数据双向绑定、面向对象的 JS 库、配置式开发的注册表等特性,随着前端技术的高速发展现在已经失去存在的意义,但是在 AUI 阶段探索的新思路新架构,经过大量的业务落地验证,再次推动前端领域…...

tcp 连接数上限突破

连接数上限条件 文件句柄的限制 一个tcp连接就需要占用一个文件描述符,一旦文件描述符用完,新的连接就会返回给我们错误是:Can’topen so many files。linux系统出于安全角度的考虑,在多个维度对于可打开的文件描述符进行了限制…...

解决 mmseg/models/decode_heads/mask2former_head.py 中__init__()关键字参数错误

目录 【1 - 问题描述】 【2 - 报错位置检查】 【3 - 问题解决】 【4 - 解决的过程】 【1 - 问题描述】 在mmsegmentation中运行mask2former模型的分割任务遇到报错缺少关键字的错误: TypeError: class Mask2FormerHead in mmseg/models/decode_heads/mask2form…...

​如何使用 ArcGIS Pro 分析爆炸波及建筑

假设在某栋建筑内发生了爆炸,需要根据爆炸的范围分析出来波及的建筑,对于这一需求,我们可以通过ArcGIS Pro来实现,这里为大家介绍一下分析的方法,希望能对你有所帮助。 数据来源 教程所使用的数据是从水经微图中下载…...

LoadBalancer (本地负载均衡)

1.loadbalancer本地负载均衡客户端 VS Nginx服务端负载均衡区别 Nginx是服务器负载均衡,客户端所有请求都会交给nginx,然后由nginx实现转发请求,即负载均衡是由服务端实现的。 loadbalancer本地负载均衡,在调用微服务接口时候&a…...

每日一题 第一期 洛谷 铺地毯

[NOIP2011 提高组] 铺地毯 https://www.luogu.com.cn/problem/P1003 题目描述 为了准备一个独特的颁奖典礼,组织者在会场的一片矩形区域(可看做是平面直角坐标系的第一象限)铺上一些矩形地毯。一共有 n n n 张地毯,编号从 1 …...

Linux 多线程开发

第三章 Linux 多线程开发 3.1 线程3.1.2 线程操作3.1.2 线程属性 3.2 线程同步3.2.1 互斥量/锁3.2.2 死锁3.2.3 读写锁 3.3 生产者消费者模型3.3.1 条件变量3.3.2 信号量/灯 网络编程系列文章: 第1章 Linux系统编程入门(上) 第1章 Linux系统…...

Android 9.0 关于在系统Launcher3中调用截图api总是返回null的解决方案

1.概述 在9.0的系统rom产品定制化开发中,在Launcher3的开发中,在某些时候需要调用截图接口来进行截屏功能实现,而在Launcher3中发现调用系统截屏接口SurfaceControl.screenshot进行截图的时候始终为null, 获取不到系统当前页面的截屏功能,所以需要找到当前截屏失败的原因然…...

openssl3.2 - exp - 用openssl命令行来模拟ECC加解密的全流程

文章目录 openssl3.2 - exp - 用openssl命令行来模拟ECC加解密的全流程概述笔记实验环境实验备注END openssl3.2 - exp - 用openssl命令行来模拟ECC加解密的全流程 概述 工程中要用到ECC加解密, 先去查了资料. 在网上能查到一些大佬们写的ECC加解密实现(基于openssl API), 不…...

【Linux进阶之路】HTTP协议

文章目录 一、基本概念1.HTTP2.域名3.默认端口号4.URL 二、请求与响应1.抓包工具2.基本框架3.简易实现3.1 HttpServer3.2 HttpRequest3.2.1 version13.2.2 version23.2.3 version3 总结尾序 一、基本概念 常见的应用层协议: HTTPS (HyperText Transfer Protocol Sec…...

股市新手福音:河北源达“财源滚滚”让投资变得更简单

在浩渺的股市海洋中,每一位投资者都渴望找到一把能够指引航向的罗盘。尤其是对于股市新手来说,面对复杂的市场环境、纷繁的个股信息以及不断变化的投资策略,如何快速入门、精准选股,无疑是一大挑战。而河北源达信息技术股份有限公…...

Docker 离线安装指南

参考文章 1、确认操作系统类型及内核版本 Docker依赖于Linux内核的一些特性,不同版本的Docker对内核版本有不同要求。例如,Docker 17.06及之后的版本通常需要Linux内核3.10及以上版本,Docker17.09及更高版本对应Linux内核4.9.x及更高版本。…...

Lombok 的 @Data 注解失效,未生成 getter/setter 方法引发的HTTP 406 错误

HTTP 状态码 406 (Not Acceptable) 和 500 (Internal Server Error) 是两类完全不同的错误,它们的含义、原因和解决方法都有显著区别。以下是详细对比: 1. HTTP 406 (Not Acceptable) 含义: 客户端请求的内容类型与服务器支持的内容类型不匹…...

python打卡day49

知识点回顾: 通道注意力模块复习空间注意力模块CBAM的定义 作业:尝试对今天的模型检查参数数目,并用tensorboard查看训练过程 import torch import torch.nn as nn# 定义通道注意力 class ChannelAttention(nn.Module):def __init__(self,…...

JavaScript 中的 ES|QL:利用 Apache Arrow 工具

作者:来自 Elastic Jeffrey Rengifo 学习如何将 ES|QL 与 JavaScript 的 Apache Arrow 客户端工具一起使用。 想获得 Elastic 认证吗?了解下一期 Elasticsearch Engineer 培训的时间吧! Elasticsearch 拥有众多新功能,助你为自己…...

django filter 统计数量 按属性去重

在Django中,如果你想要根据某个属性对查询集进行去重并统计数量,你可以使用values()方法配合annotate()方法来实现。这里有两种常见的方法来完成这个需求: 方法1:使用annotate()和Count 假设你有一个模型Item,并且你想…...

新能源汽车智慧充电桩管理方案:新能源充电桩散热问题及消防安全监管方案

随着新能源汽车的快速普及,充电桩作为核心配套设施,其安全性与可靠性备受关注。然而,在高温、高负荷运行环境下,充电桩的散热问题与消防安全隐患日益凸显,成为制约行业发展的关键瓶颈。 如何通过智慧化管理手段优化散…...

linux 下常用变更-8

1、删除普通用户 查询用户初始UID和GIDls -l /home/ ###家目录中查看UID cat /etc/group ###此文件查看GID删除用户1.编辑文件 /etc/passwd 找到对应的行,YW343:x:0:0::/home/YW343:/bin/bash 2.将标红的位置修改为用户对应初始UID和GID: YW3…...

什么是Ansible Jinja2

理解 Ansible Jinja2 模板 Ansible 是一款功能强大的开源自动化工具,可让您无缝地管理和配置系统。Ansible 的一大亮点是它使用 Jinja2 模板,允许您根据变量数据动态生成文件、配置设置和脚本。本文将向您介绍 Ansible 中的 Jinja2 模板,并通…...

dify打造数据可视化图表

一、概述 在日常工作和学习中,我们经常需要和数据打交道。无论是分析报告、项目展示,还是简单的数据洞察,一个清晰直观的图表,往往能胜过千言万语。 一款能让数据可视化变得超级简单的 MCP Server,由蚂蚁集团 AntV 团队…...

Spring Cloud Gateway 中自定义验证码接口返回 404 的排查与解决

Spring Cloud Gateway 中自定义验证码接口返回 404 的排查与解决 问题背景 在一个基于 Spring Cloud Gateway WebFlux 构建的微服务项目中,新增了一个本地验证码接口 /code,使用函数式路由(RouterFunction)和 Hutool 的 Circle…...