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提供了全面的企业级功能,如事务管理、安全、数据访问等,满足复杂业务需求。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

vmdx 文件如何打开

如果在网上下载到了 vmdx 文件要如何使用呢 首先开启 vmware 新建一个虚拟机 选择高级模式 选择你要给他的配置 在选择磁盘文件的时候,找到这个vmdx 如果要升级的话最好选择【不升级】 然后就可以用了

倪师哲学。不要浪费时间去做无谓的事情

再比如你像我拍这个视频,在我的视频下方啊,评论区啊,经常性的会有一些人去评论,一些那种不痛不痒的事,我给你找几条,你看一下就知道了. 就比如,今天早上,我翻到倪海夏老师的第一篇图…

如何获取SSL证书,消除网站不安全警告

获取SSL证书通常涉及以下几个步骤: 选择证书颁发机构(CA): 你需要从受信任的SSL证书颁发机构中选择一个,比如DigiCert、GlobalSign、JoySSL等。部分云服务商如阿里云、腾讯云也提供免费或付费的SSL证书服务。 生成证…

命运方舟台服注册 命运方舟台服怎么注册?不会操作看这里

命运方舟台服注册 命运方舟台服怎么注册?不会操作看这里 命运方舟作为今年备受瞩目的一款MMORPG类型游戏,在上线前的预约数量已经一次又一次创下新高。这款游戏的开发商Smile gate真是给玩家们带来了一款让人眼前一亮的作品。游戏创建在虚幻引擎的基础…

为什么要学习数据结构和算法

前言 控制专业转码学习记录,本科没学过这门课,但是要从事软件行业通过相关面试笔试基础还是要打牢固的,所以通过写博客记录一下。 必要性 1.越是厉害的公司,越是注重考察数据结构与算法这类基础知识 2.作为业务开发&#xff0c…

40号渐变灰色背景证件照要求,手机拍照轻松拍干部照片

灰色渐变背景的证件照是一种常见的照片类型,在干部档案、事业单位工作人员信息采集、履历及升迁公示等阶段会用到,按照规范需要使用40号渐变灰色背景。很多朋友不清楚40号灰色是哪种灰色,以及照片的尺寸要求,下面就重点介绍40号渐…

一篇文章讲透数据结构之树

一.树 1.1树的定义 树是一种非线性的数据结构,它是有n个有限结点组成的一个具有层次关系的集合。把它叫做树是因为它看起来像一棵倒挂的树,也就是说它是根在上,叶在下的。 在树中有一个特殊的结点,称为根结点,根结点…

vue3可以快速简单的操作dom元素了

再也不需要用document.getElementById("myElement")的这种方式来对dom元素进行操作了 我们需要使用模板引用——也就是指向模板中一个 DOM 元素的 ref。我们需要通过这个特殊的 ref attribute 来实现模板引用&#xff1a; <script setup> import { ref, onMo…

【linux】docker安装下载器:aria2、gopeed、thunder迅雷

一、aria2 1、下载aria2服务镜像 docker pull p3terx/aria2-pro 2、下载ariang页面服务 docker pull p3terx/ariang 3、启动aria2服务 docker run -d --name aria2 \ --restart unless-stopped \ --log-opt max-size1m \ -e PUID$UID \ -e PGID$GID \ -e UMASK_SET022 \ -…

基于电导增量MPPT控制算法的光伏发电系统simulink建模与仿真

目录 1.课题概述 2.系统仿真结果 3.核心程序与模型 4.系统原理简介 5.完整工程文件 1.课题概述 基于电导增量MPPT控制算法的光伏发电系统simulink建模与仿真。输出MPPT跟踪后的系统电流&#xff0c;电压以及功率。 2.系统仿真结果 3.核心程序与模型 版本&#xff1a;MAT…

Facebook的创新实验室:人工智能与新技术探索

Facebook作为全球领先的社交媒体平台之一&#xff0c;一直在不断探索和应用最新的技术来改善用户体验、推动创新和拓展业务边界。其创新实验室更是探索人工智能&#xff08;AI&#xff09;和新技术的前沿&#xff0c;为未来的社交媒体发展开辟了新的可能性。本文将深入探讨Face…

深度学习复盘与论文复现A

文章目录 一、查漏补缺复盘1、python中zip()用法2、Tensor和tensor的区别3、计算图中的迭代取数4、nn.Modlue及nn.Linear 源码理解5、知识杂项思考列表6、KL散度初步理解 二、处理多维特征的输入1、逻辑回归模型流程2、Mini-Batch (N samples) 三、加载数据集1、Python 魔法方法…

神经网络的工程基础(二)——随机梯度下降法|文末送书

相关说明 这篇文章的大部分内容参考自我的新书《解构大语言模型&#xff1a;从线性回归到通用人工智能》&#xff0c;欢迎有兴趣的读者多多支持。 本文涉及到的代码链接如下&#xff1a;regression2chatgpt/ch06_optimizer/stochastic_gradient_descent.ipynb 本文将讨论利用…

Linux下CPU1000%记一次挖矿病毒清理流程

今天top后发现一个进程CPU高1795%&#xff0c;判断是病毒 查找进程ps -elf|grep 进程idpid和ppid查找到sleep进程 ps -ef|grep 4277 查看具体进程内容&#xff0c;ll /proc/进程idpid ll /proc/4277 ls -l /proc/{pid号} ls -l /proc/{pid号}/exe kill掉病毒进程 排查病毒…

Android开机动画的结束过程BootAnimation(基于Android10.0.0-r41)

文章目录 Android 开机动画的结束过程BootAnimation(基于Android10.0.0-r41) Android 开机动画的结束过程BootAnimation(基于Android10.0.0-r41) 路径frameworks/base/cmds/bootanimation/bootanimation_main.cpp init进程把我们的BootAnimation的二进制文件拉起来了&#xf…

如何备份RDK X3(旭日X3派)的 SD卡镜像

该方法可以在Ubuntu的开发机上生成一个img镜像&#xff0c;后续可以直接使用rufus软件烧录备份好的镜像。 Step 1&#xff1a;在Ubuntu的开发机上安装gparted软件 如果安装失败则需要为您的Ubuntu开发机换源&#xff0c;这里推荐阿里源&#xff1a;https://developer.aliyun.…

用户购物性别模型标签(USG)之决策树模型

一、USG模型引入: 首先了解一下&#xff0c;如何通过大数据来确定用户的真实性别&#xff0c; 经常谈论的用户精细化运营&#xff0c;到底是什么? 简单来讲&#xff0c;就是将网站的每个用户标签化&#xff0c;制作一个属于用户自己的网络身份证。然后&#xff0c;运营人员 通…

【算法】贪心算法简介

贪心算法概述 目录 1.贪心算法概念2.贪心算法特点3.贪心算法学习 1.贪心算法概念 贪心算法是一种 “思想” &#xff0c;即解决问题时从 “局部最优” 从而达到 “全局最优” 的效果。 ①把解决问题的过程分为若干步②解决每一步时候&#xff0c;都选择当前最优解(不关注全局…

基于SSM前后端分离版本的论坛系统-自动化测试

目录 前言 一、测试环境 二、环境部署 三、测试用例 四、执行测试 4.1、公共类设计 创建浏览器驱动对象 测试套件 释放驱动类 4.2、功能测试 注册页面 登录页面 版块 帖子 用户个人中心页 站内信 4.3、界面测试 注册页面 登录页面 版块 帖子 用户个人中心页…

数据整理操作及众所周知【数据分析】

各位大佬好 &#xff0c;这里是阿川的博客&#xff0c;祝您变得更强 个人主页&#xff1a;在线OJ的阿川 大佬的支持和鼓励&#xff0c;将是我成长路上最大的动力 阿川水平有限&#xff0c;如有错误&#xff0c;欢迎大佬指正 Python 初阶 Python–语言基础与由来介绍 Python–…