Spring系统学习 - Spring入门
什么是Spring?
Spring翻译过来就是春天的意思,字面意思,冠以Spring的意思就是想表示使用这个框架,代表程序员的春天来了,实际上就是让开发更加简单方便,实际上Spring确实做到了。
官网地址:https://spring.io/
Spring 是最受欢迎的企业级 Java 应用程序开发框架,数以百万的来自世界各地的开发人员使用。Spring 框架来创建性能好、易于测试、可重用的代码。也是一个开源的 Java 平台,它最初是由 Rod Johnson 编写的,并且于 2003 年 6 月首次在 Apache 2.0 许可下发布。Spring 是轻量级的框架,其基础版本只有 2 MB 左右的大小。
Spring 框架的核心特性是可以用于开发任何 Java 应用程序,但是在 Java EE 平台上构建 web 应用程序是需要扩展的。 Spring 框架的目标是使 J2EE 开发变得更容易使用,通过启用基于 POJO编程模型来促进良好的编程实践。
Spring 家族
项目列表:https://spring.io/projects
Spring Framework
Spring 基础框架,可以视为 Spring 基础设施,基本上任何其他 Spring 项目都是以 Spring Framework为基础的。包括SpringBoot,SpringCloud等等。
Spring Framework特性

数据访问/集成(Data Access/Integration):
- JDBC: 提供了Java数据库连接,简化了数据库操作。
- ORM: 对象关系映射,支持如Hibernate这样的ORM工具。
- OXM: 对象XML映射,用于将对象与XML数据之间进行转换。
- JMS: Java消息服务,用于处理消息。
- 事务(Transactions): 提供了声明式和编程式的事务管理。
网络(Web):
- WebSocket: 提供了WebSocket通信功能。
- Servlet: 支持Servlet API。
- Web: 包含多种Web开发的支持,如Spring MVC。
- Portlet: 为Portlet环境提供了MVC实现。
面向切面编程(AOP):
- AOP: 提供了面向切面编程的实现,允许定义方法拦截器和切点,以实现诸如事务管理、安全性等横切关注点。
- Aspects: 与AOP相关的一些支持,如与AspectJ的集成。
仪器化(Instrumentation): 提供了类仪器化和资源管理的功能。
消息(Messaging): 提供了消息传递的支持,包括使用消息队列。
核心容器(Core Container):
- Beans: 提供了Bean的定义、创建和管理。
- Core: Spring框架的核心部分,包括IoC和依赖注入功能。
- Context: 提供了框架式的对象访问,如国际化、事件传播等。
- SpEL: Spring表达式语言,用于查询和操作对象图。
测试(Test): 提供了测试Spring组件的支持,如模拟对象和测试框架集成。
特性
- 非侵入式:使用 Spring Framework 开发应用程序时,Spring 对应用程序本身的结构影响非常小。对领域模型可以做到零污染;对功能性组件也只需要使用几个简单的注解进行标记,完全不会破坏原有结构,反而能将组件结构进一步简化。这就使得基于 Spring Framework 开发应用程序时结构清晰、简洁优雅。
- 控制反转:IOC——Inversion of Control,翻转资源获取方向。把自己创建资源、向环境索取资源,变成环境将资源准备好,我们享受资源注入。
- 面向切面编程:AOP——Aspect Oriented Programming,在不修改源代码的基础上增强代码功能。
- 容器:Spring IOC 是一个容器,因为它包含并且管理组件对象的生命周期。组件享受到了容器化的管理,替程序员屏蔽了组件创建过程中的大量细节,极大的降低了使用门槛,大幅度提高了开发效率。
- 组件化:Spring 实现了使用简单的组件配置组合成一个复杂的应用。在 Spring 中可以使用 XML和 Java 注解组合这些对象。这使得我们可以基于一个个功能明确、边界清晰的组件有条不紊的搭建超大型复杂应用系统。
- 声明式:很多以前需要编写代码才能实现的功能,现在只需要声明需求即可由框架代为实现。
- 一站式:在 IOC 和 AOP 的基础上可以整合各种企业应用的开源框架和优秀的第三方类库。而且Spring 旗下的项目已经覆盖了广泛领域,很多方面的功能性需求可以在 Spring Framework 的基础上全部使用 Spring 来实现。
Spring Framework五大功能模块
| 功能模块 | 功能介绍 |
|---|---|
| Core Container | 核心容器,在 Spring 环境下使用任何功能都必须基于 IOC 容器。 |
| AOP&Aspects | 面向切面编程 |
| Testing | 提供了对 junit 或 TestNG 测试框架的整合。 |
| Data Access/Integration | 提供了对数据访问/集成的功能。 |
| Spring MVC | 提供了面向Web应用程序的集成功能。 |
Spring框架的主要模块包括:
- Spring Core:提供核心的依赖注入(DI)功能。
- Spring AOP:支持面向切面编程(AOP),允许在不修改代码的情况下添加行为。
- Spring MVC:用于构建基于Web的应用程序,提供了强大的MVC架构。
- Spring Data:简化了数据访问层的开发,支持多种数据存储技术。
- Spring Security:提供全面的安全功能,包括认证和授权。
- Spring Boot:简化了Spring应用程序的配置和部署,提供了开箱即用的默认设置。
特性功能
- 依赖注入(DI):通过依赖注入,Spring可以自动管理对象之间的依赖关系,减少了代码的耦合度。
- 面向切面编程(AOP):允许开发者在不修改业务逻辑代码的情况下,添加横切关注点(如日志记录、事务管理等)。
- 事务管理:Spring提供了声明式事务管理,简化了事务的处理。
- 数据访问:Spring Data模块支持多种数据存储技术(如JPA、MongoDB、Redis等),简化了数据访问层的开发。
- 集成测试:Spring提供了强大的测试支持,允许开发者轻松编写和运行集成测试。
- 模块化设计:Spring框架是模块化的,开发者可以根据需要选择使用不同的模块。
- Spring Boot:通过Spring Boot,开发者可以快速创建独立的、生产级的Spring应用程序,减少了配置的复杂性。
使用Spring的好处
- 简化开发:Spring的依赖注入和面向切面编程功能大大简化了开发过程,使代码更加简洁和易于维护。
- 提高生产力:Spring Boot提供了开箱即用的默认设置和自动配置,显著提高了开发效率。
- 可测试性:Spring框架提供了强大的测试支持,使得单元测试和集成测试更加容易。
- 灵活性和可扩展性:Spring的模块化设计和丰富的生态系统使得应用程序可以灵活地扩展和集成各种第三方库和服务。
- 社区支持:Spring拥有庞大的社区和丰富的文档资源,开发者可以轻松找到解决方案和最佳实践。
- 企业级功能:Spring提供了全面的企业级功能,如事务管理、安全、数据访问等,满足复杂业务需求。
相关文章:
Spring系统学习 - Spring入门
什么是Spring? Spring翻译过来就是春天的意思,字面意思,冠以Spring的意思就是想表示使用这个框架,代表程序员的春天来了,实际上就是让开发更加简单方便,实际上Spring确实做到了。 官网地址:ht…...
Priority_queue
一、priority_queue的介绍和使用 1.1 priority_queue的介绍 1.优先队列是一种容器适配器,根据严格的弱排序标准,它的第一个元素总是它所包含的元素中最大的。 2.优先队列类似于堆, 在堆中可以随时插入元素, 并且只能检索最大堆…...
SpringMVC:获取请求数据
1. 通过RequestParma注解接收 /**** value和name都可以使用,互为别名* 如果此处设置了需要什么参数而前端请求时没有提供则会报400(请求参数不一致错误)* required参数用于设置该参数是否为必须传递参数,默认为true必须传递* defa…...
深度学习 --- stanford cs231 编程作业(assignment1,Q2: SVM分类器)
stanford cs231 编程作业之SVM分类器 写在最前面: 深度学习,或者是广义上的任何学习,都是“行千里路”胜过“读万卷书”的学识。这两天光是学了斯坦福cs231n的一些基础理论,越往后学越觉得没什么。但听的云里雾里的地方也越来越多…...
【scikit-learn010】sklearn算法模型清单实战及经验总结(已更新)
1.一直以来想写下基于scikit-learn训练AI算法的系列文章,作为较火的机器学习框架,也是日常项目开发中常用的一款工具,最近刚好挤时间梳理、总结下这块儿的知识体系。 2.熟悉、梳理、总结下scikit-learn框架模型算法包相关技术点及经验。 3.欢迎批评指正,欢迎互三,跪谢一键…...
Rethinking overlooked aspects in vision-language models
探讨多模态视觉语言模型的一些有趣结论欢迎关注 CVHub!https://mp.weixin.qq.com/s/zouNu-g-33_7JoX3Uscxtw1.Introduction 多模态模型架构上的变化不大,数据的差距比较大,输入分辨率和输入llm的视觉token大小是比较关键的,适配器,VIT和语言模型则不是那么关键。InternVL-…...
【漯河市人才交流中心_登录安全分析报告-Ajax泄漏滑动距离导致安全隐患】
前言 由于网站注册入口容易被黑客攻击,存在如下安全问题: 暴力破解密码,造成用户信息泄露短信盗刷的安全问题,影响业务及导致用户投诉带来经济损失,尤其是后付费客户,风险巨大,造成亏损无底洞…...
C语言—字符函数和字符串函数
1.字符分类函数 C语言中有一系列的函数是专门做字符分类的,也就是一个字符是属于什么类型的字符的。 这些函数的使用都需要包含一个头文件 ctype.h。 例:将一句话中的小写字母改成大写字母。 2.字符转换函数 头文件:ctype.h C语言提供了2…...
爬山算法的详细介绍
爬山算法(Hill Climbing Algorithm)是一种基于启发式的局部搜索算法,常用于解决优化问题。它的核心思想是从当前解的邻域中选择能够使目标函数值最大(或最小)的下一个解作为当前解,直到找到一个满足问题要求…...
硕士课程 可穿戴设备之作业一
作业一 第一个代码使用的方法是出自于[1]。 框架结构 如下图,不过根据对代码的解读,发现作者在代码中省去了对SSR部件的实现,下文再说。 Troika框架由三个关键部件组成:信号分解,SSR和光谱峰值跟踪。(粗…...
测试记录3:WLS2运行Linux界面
1.WLS1转到WLS2 (1)根据自己的平台,下载WLS2安装包 x64: https://wslstorestorage.blob.core.windows.net/wslblob/wsl_update_x64.msi arm64: https://wslstorestorage.blob.core.windows.net/wslblob/wsl_update_arm64.msi (2&…...
好用软件推荐
软件功能相关介绍地址FastStone截图(长截图、定时截图等)CSDNhttps://www.faststone.org/FSCaptureDownload.htmQuicker快捷访问https://getquicker.net/https://getquicker.net/...
王学岗鸿蒙开发(北向)——————(二)TS基本语法详解
1,Ts(TypeScript)语法相当于JAVAScript类型,鸿蒙arkTs是基于TS语言的,当然artTs也融合了其它的语言。 2,本篇文章是基于n9版本。注意,有些语法是已经不能用的。 3, 4,变量:用来存储数据,数字字母组成,数字不…...
【网络协议 | HTTP】HTTP总结与全梳理(一) —— HTTP协议超详细教程
🔥博客简介:开了几个专栏,针对 Linux 和 rtos 系统,嵌入式开发和音视频开发,结合多年工作经验,跟大家分享交流嵌入式软硬件技术、音视频技术的干货。 ✍️系列专栏:C/C、Linux、rtos、嵌入式…...
java基础选择题--11
1. 以下保留字( )不能出现在说明虚函数原型的语句中。A.static B.operator C.void D.const 参考答案:A 2. 一个类中只能定义一个析构函数。( )A.对 B.错 参考答案:A 解释: 在C中,一个类只能有一个析构函数。析构函数在对象生…...
欲除烦恼须无我,各有前因莫羡人
欲除烦恼须无我,各有前因莫羡人...
Vue的APP实现下载文件功能,并将文件保存到手机中
Vue的APP实现下载文件功能,并将文件保存到手机中 文字说明后台核心代码前台核心代码运行截图项目链接 文字说明 本文介绍Vue实现的APP,将文件下载并保存到手机中,为系统提供导出功能;同时支持导入,即选择本地的文件后&…...
泛微开发修炼之旅--07通过后端代码实现创建并发送待办、源码及示例
文章链接:泛微开发修炼之旅--07通过后端代码实现创建并发送待办、源码及示例...
轻松搭建AI应用的三个大模型技术路线
时下聊起AI,想必最热的就是使用AI的应用(chatGPT,文心一言等)来提升自己工作的效率,比如破局俱乐部,洋哥带领星球2万多人开启大航海,教人使用这一波新起的应用进行赚钱与赋能。 在我的视角来看…...
Vue01-vue的简介
一、Vue是什么? 一套用于构建用户界面的渐进式javaScript框架。 构建用户界面: 渐进式: 目前Vue的地位:生态完善,国内前端工程师必备技能。 二、Vue的特点 一个XXX.vue就是一个组件,封装的概念,…...
renderer数学库解析:3D图形学中的向量、矩阵与四元数
renderer数学库解析:3D图形学中的向量、矩阵与四元数 【免费下载链接】renderer A shader-based software renderer written from scratch in C89 项目地址: https://gitcode.com/gh_mirrors/re/renderer 想要从零开始构建一个完整的3D渲染器吗?r…...
AcousticSense AI优化升级:如何提升识别准确率和响应速度
AcousticSense AI优化升级:如何提升识别准确率和响应速度 1. 从听到看:音频识别的新范式 传统音频识别技术往往受限于特征提取的局限性,而AcousticSense AI开创性地将声音转化为视觉信号进行处理。这套系统通过三个关键步骤实现音频理解&am…...
极客必备:OpenClaw+Qwen3.5-9B打造个人CLI增强工具集
极客必备:OpenClawQwen3.5-9B打造个人CLI增强工具集 1. 为什么需要AI增强命令行? 作为每天与终端打交道的开发者,我经常陷入两种困境:要么忘记复杂的grep参数组合,要么面对满屏日志输出找不到关键信息。传统解决方案…...
开发环境神器:OpenClaw+Qwen3-14B镜像自动化调试与日志分析
开发环境神器:OpenClawQwen3-14B镜像自动化调试与日志分析 1. 为什么开发者需要自动化调试助手 作为一名全栈开发者,我每天要面对各种复杂的调试场景:前端页面渲染异常、后端接口返回500错误、数据库查询性能低下...传统的调试方式需要手动…...
C/C++变量初始化实践与内存管理技巧
1. 变量初始化的核心价值与常见误区在C/C开发中,变量初始化是每个程序员每天都要面对的基础操作,但很多人对其理解停留在表面。我曾参与过多个大型嵌入式项目,亲眼见过因为初始化不当导致的系统崩溃案例。比如在某工业控制器项目中࿰…...
三相四桥臂APF的双闭环控制的simulink仿真图,用的是Matlab2018a,可以看出
三相四桥臂APF的双闭环控制的simulink仿真图,用的是Matlab2018a,可以看出,控制前电网电流THD值达24%,中线电流10A,经过PID控制以后降低到了5%以下,母线电压稳定在800v,中线电流降为2A 随仿真有参考文献最近…...
DeepSeek-OCR-2功能体验:双列可视化界面,左传图右看结果,操作直观
DeepSeek-OCR-2功能体验:双列可视化界面,左传图右看结果,操作直观 1. 为什么这个OCR工具值得一试 如果你经常需要处理扫描文档、PDF文件或者图片中的文字,传统OCR工具可能让你又爱又恨。它们确实能提取文字,但遇到复…...
RL训练像点外卖?ProRL底层逻辑拆解(非常详细),从入门到精通看这篇!
一句话讲清楚👉🏻 NVIDIA提出ProRL Agent,把多轮LLM Agent的RL训练中「轨迹生成(Rollout)」这一步从训练框架中彻底剥离出来,变成一个独立的HTTP服务,训练侧只需发HTTP请求就能拿到轨迹和奖励信…...
3步搞定小红书内容采集:XHS-Downloader免费无水印下载终极指南
3步搞定小红书内容采集:XHS-Downloader免费无水印下载终极指南 【免费下载链接】XHS-Downloader 小红书(XiaoHongShu、RedNote)链接提取/作品采集工具:提取账号发布、收藏、点赞、专辑作品链接;提取搜索结果作品、用户…...
2025最权威的五大降重复率方案推荐
Ai论文网站排名(开题报告、文献综述、降aigc率、降重综合对比) TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 当下,各种各样的AI生成内容检测系统变得越发精密,这给那些依赖AI进行…...
