学习Spring之前要先学习什么?

Spring Cloud 从入门到精通 Spring Cloud 是一套完整的微服务解决方案,基于 Spring Boot 框架,准确的说,它不是一个框架,而是一个大的容器,它将市面上较好的微服务框架集成进来,从而简化了开发者的代码量。 本课程由浅入深带领大家一步步攻克 Spring Cloud 各大模块,接着通过一个实例带领大家了解大型分布式微服务架构的搭建过程,最后深入源码加深对它的了解。 本课程共分为四个部分: 第一部分(第... 阅读详情

开门见山,先放结论。

要开始学习Spring(以IOC和Spring MVC为核心),只需要做好以下准备即可:

  1. 《Java核心技术》前6章。
  2. Java反射原理(选学)。
  3. Servlet。

而想理解上面的结论,则首先必须理解Spring是干什么的。

打开Spring的官方网站,点击projects页面,你会看到一个偌大的结构图。其中列出许多项目,包括:Spring Boot、Spring Cloud 、Spring Data…。对初学来说,乍一看着实吓一跳,完全不知道从何下手。

但透过表现看本质。无论是Spring Data,还是Spring Cloud,都是建立在Spring Framework上的一个个具体领域的应用,如下图:

在Spring Framwork中,包含了Spring体系的核心机制及应用,包括IOC、AOP,SpringMVC、Data Access等。而且,即使在Spring Framework内部,各个功能之间也不是水平的,而是存在依赖关系的。

其中最底层,最核心的概念有两个:IOC和AOP。两者之间,尤以IOC为重。

因此,把上图中的Spring Framework勾画再详细点就是这样:

在实践中,Spring全家桶中使用最广泛就是IOC和Spring MVC。从上图中,我们也可以看到,Spring MVC是依赖于IOC的。因此要学习Spring MVC,就必须先学习IOC。

而在公司的内部培训,我都会有意把IOC 和SpringMVC完全独立起来进行,因为并不是所有的工程师(例如测试工程师)都对SpringMVC有需求。

到这里,思路就清晰了。如果要学习Spring,必须掌握的就是IOC。因此,所谓的Spring前置知识,某种意义上,就是Spring IOC的前置知识。

然后,我们再来简单讲解下IOC的概念。

对初学者来说,初听到IOC,会觉得特别高大上。但如果真掰开讲明白,你就会发现其实特别简单。

为了便于理解,我用一个例子的说明。

这里有一个应用,包含两个Jar包,一个是myApp.jar,一个是lib.jar。其中myApp.jar包含了程序的主逻辑,由程序员A编写。lib.jar中定义了一个接口,和该接口的实现类,由程序员员B编写。

如下图:

在lib.jar中,有一个接口Person,两个实现类Student、Teacher。在myApp.jar,通过代码

Person p = null;

从而导致myApp.jar依赖于lib.jar。但因为语句Person p只是做了定义,而没有实际赋值。这时候我们就称myApp.jar仅依赖于lib.jar(通过接口Person),但并没有实现“注入”。

然后,我们把程序进一步修改下,如图:

其中修改了语句:

Person p = new Student();

这样,MyApp.jar就把Student的实例“注入”到了对象p中,也就是说,通过new关键字创建对象,这就是最常见的依赖注入方法。

但这种写法有一个很大的缺点,那就是因为myApp.jar不仅依赖于Person接口,还依赖于具体的实现类Student,这是一种明显的强耦合。而如果哪天myApp.jar不想使用Student了,而想使用Teacher,那么程序员就不得不回过头来修改myApp.jar的代码。

而在实际应用中,myApp.jar中往往包含了程序主流程。而主流程一旦完成,就应该保持相对稳定。如果有改变,也应该通过扩展的方式。这也就是架构设计中著名的“开关原则”,即主业务对修改关闭,对扩展开放。而使用Spring就可以达到这样的目的。

下面我们就引入Spring IOC机制,把代码修改下。如图:

这样,在myApp.jar包中,就把对Person对象的具体注入从代码中移除,代之在spring.xml文件中定义。任何时候,只要修改Spring.xml的配置,就能改变myApp.jar中具体Person对象的注入。从而保证了“开关原则”。

而上面的整个过程,就是通过Spring框架中的IOC机制来实现的。

从中,你也能体察到Spring框架为什么对企业级程序这么重要性。因为企业级程序必然是复杂的,而要解决复杂度的前提就是解耦。可以说,没有解耦,所有企业级应用都会崩溃在千丝万缕的业务逻辑中。

看到这里,你可能已经发现,对Spring的核心概念IOC来说,并没有涉及任何高深的Java语法,最多也就是接口和抽象类。因此学习Spring IOC,参考《Java核心技术》,只要学到前6章就可以了。

因为Spring IOC的核心机制是建立在Java“反射”基础上的。因此,如果你有兴趣继续探究Spring IOC的核心原理,就有必要提前学习下Java与反射相关的概念。

再说下Spring中另一个最常用的功能Spring MVC。

Spring MVC的运行时建立在两个技术基础上:IOC和Servlet。如果不懂IOC,就搞不明不白Spring MVC是如何配置的。如果不懂Servlet,则就搞不理解Spring是如何注入及拦截Servlet消息的。而之后一旦Spring MVC在运行中出了问题,则必然会茫然不知所措。

虽然Spring MVC中的V(view),最常见的输出目标是JSP页面。但因为现代的企业应用越来越倾向于前后端分离,后端系统只负责输出REST接口。因此在Spring MVC框架中,View这一层就没有存在的必要,学习JSP也就没有价值了。

 

最后,再总结一下学习Spring(以IOC和Spring MVC为核心)必备的前置知识:

  1. 《Java核心技术》前6章。
  2. Java反射原理(选学)。
  3. Servlet。
  4. 入门正在学习java或者即将学习资料包以及BAT面试资料,供大家参考及学习,免费领取方式加QQ群下载:926452303在这里插入图片描述
学习Spring Boot,应该从哪里开始学起 学习Spring Boot,应该从哪里开始学起记住,学习是一个持续的过程,不要害怕遇到困难和挑战。通过不断的实践和探索,你会逐渐掌握Spring Boot的精髓。 阅读详情

相关推荐

Spring Boot 入门学习路线

Spring Boot 是一个用于快速构建基于 Spring 框架的应用程序的开源框架。它简化了 Spring 应用程序的搭建和部署过程,减少了繁琐的配置,并提供了一系列的开箱即用特性。如果你是刚开始学习 Spring Boot,以下是一个详细的学习路线,帮助你快速入门并掌握 Spring Boot 的核心概念和功能。

2301_79108888的博客 1155

如何学习SpringBoot

Spring框架是一种轻量级的Java开发框架,它提供了丰富的功能和组件,例如:IoC、AOP、数据访问、事务管理等,学习Spring框架可以帮助您更好地理解和使用SpringBoot框架。3. 学习SpringBoot框架的基本概念和使用方法。SpringBoot框架是一种快速、简单、方便的开发框架,您可以通过官方文档、视频教程、书籍等途径学习SpringBoot框架的基本概念和使用方法。SpringBoot框架是一个不断更新和发展的框架,您需要保持不断学习的态度,关注最新的技术动态和发展趋势。

qq_63445884的博客 1724

Python 打包与发布陷阱:如何用 setuptools 和 PyInstaller 生成跨平台可执行文件?

使用。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 1209

spring ioc原理_学习Spring之前要先学习什么?

开门见山,先放结论。要开始学习Spring(以IOC和Spring MVC为核心),只需要做好以下准备即可:《Java核心技术》前6章。Java反射原理(选学)。Servlet。而想理解上面的结论,则首先必须理解Spring是干什么的。打开Spring的官方网站,点击projects页面,你会看到一个偌大的结构图。其中列出许多项目,包括:Spring Boot、Spring Cloud 、Spri...

weixin_39581571的博客 114

非root用户如何在CentOS7集群上编译安装OpenFOAM6

本文详细介绍了在CentOS7集群上以非root用户身份编译安装OpenFOAM6的完整流程。通过环境准备、依赖包离线获取、源码编译安装等步骤,解决了集群环境下权限和依赖问题,特别针对OpenMPI和Boost库提供了优化配置建议,帮助用户高效完成安装并优化性能。

weixin_28826961的博客 683

loadStop的原因导致的SSUSP

Total内存值是可用来调度的可用内存,当前可用内存为 0M。 loadSched和loadStop的阈值是根据 Total 内存和节点内存来做限制的。 loadStop 50G,现在有大量作业SSUSP,说明之前某个时间点该节点内存可能有低于50G的时候,导致作业SSUSP,具体是否是这个原因引起的需要用 bjobs -l JobID 看下作业的详细信息。 如果是loadStop的原因导致的 SSUSP,根据loadStop设置的阈值,Total 值高于loadStop值后,将逐步恢复挂起的作业

Blueberry521的博客 667

spring中常见的注解--springboot,springcloud学习之前最好先掌握这些知识

给容器注册组件的三种方式 包扫描+组件标记注解(@Component @Control @Repository),这是自己写的类常用这种方式 @Bean [ 导入的第三方包里面的组件 ] @Import [快速给容器注册组件] id默认是全类名 Spring注解驱动开发 组件(bean)注册@Configuration@Bean注解 用xml给Person类注册到容器中,并赋属性值 ComponentScan注解 作用 在测试类中加载bean.xml时,如果是用@Component注解注册组件到

russwest44的博客 785

【FPGA】Verilog代码实现温湿度传感器DHT11

#今天也是咸鱼的一天~ 因为参加Robei 杯 是要做一个机器人,先不说这个机器人具体怎么机器法,但是和外界互通的传感器肯定少不了,通过获取外界环境数据,进行处理,然后做出各种各样的功能。 先来讲个简单的模块,温湿度传感器DHT11。 DHT11介绍 DHT11是一款价格便宜,易于使用的温度湿度测量二合一传感器。它具有超小体积、极低功耗的特点。它使用单根总线与单片机进行双向的串行数据传输,信号传...

Ninquelote的博客 9163

学习Spring之前要先学习什么?,2024年最新2024最新中高级Golang面试题目

这样,在myApp.jar包中,就把对Person对象的具体注入从代码中移除,代之在spring.xml文件中定义。这里有一个应用,包含两个Jar包,一个是myApp.jar,一个是lib.jar。这样,MyApp.jar就把Student的实例“注入”到了对象p中,也就是说,通过new关键字创建对象,这就是最常见的依赖注入方法。但这种写法有一个很大的缺点,那就是因为myApp.jar不仅依赖于Person接口,还依赖于具体的实现类Student,这是一种明显的。”,即主业务对修改关闭,对扩展开放。

2401_84239901的博客 507

ESXI 与 OPNSense 配合

国庆期间在家里更新曾经购买的设备,将曾经的单系统,加固为防火墙,多系统的网络架构,如下图: 网络架构 在 ESXI 系统中默认存在一个 vSwitch0 交换机,且其不能被修改名称,因此在此通过修改其对应绑定的上行网卡即可,具体如下: 设置 vSwitch0 上行链路 将 vmnic 0 (网口...

weixin_34050389的博客 2314

UNet改进(54):当医学图像分割遇上频域学习与自监督

本文提出了一种改进U-Net的方法,通过频域增强模块和代理任务模块提升医学图像分割性能。频域增强模块在傅里叶空间对特征图进行可学习的频率调制,重点增强高频细节特征;代理任务模块通过图像重建约束编码器保留关键信息。两个模块协同工作,在仅增加5%参数量的情况下,形成空间域、频域和重建约束三条互补的信息路径。该方法特别适用于需要精细边缘分割的医学图像任务,预期能提升5%-10%的边缘分割精度,在小样本场景效果更显著。部署时可移除代理任务模块,不影响推理效率。未来可探索空间自适应频域调制和更丰富的代理任务设计。

2501_91516851的博客 228

学习Java开源框架前你应该了解的

不要上来就学Struts/WebWork/Spring/Hibernate/iBATIS等等框架,先了解一下下面一些技术,对于学习框架来说是十分重要的。   一是Java的反射机制和自省机制。大部分框架都用到这两种机制,因为它们都要实现通过配置文件自动完成类的识别和加载,所以必须要使用反射和自省。尤其是自省机制,对于大家了解JSP中的一些知识也是很有帮助的。比如,如果在EL中使用 ${user.

Tectool的博客 2363

QEMU理解与分析系列(11):QEMU内存机制

在物理机上,CPU 对于内存的访问在保护模式下通过分段分页的形式实现。在该模式下,CPU 访问时使用的是虚拟地址,通过 MMU 映射到物理地址,将虚拟地址转换为物理地址才能访问实际的物理内存。同样的,虚拟机模拟的物理机同样需要有上述的机制,也需要有从虚拟地址到物理地址的转换。这里需要注意,模拟的物理机的物理地址本质上是 qemu 的虚拟地址。

swh547的博客 50

Spring之前必须会Servlet

Spring已经不是一个框架,而是一个开发生态圈了,越来越多的框架,工具包都在Spring的基础上开发而来,所以很有必要对Spring不断进行学习,所以打算对Spring再次学习。那么学习Spring之前需要了解Servlet,Spring的入口就在Servlet里。 先来了解下Servlet。 Servlet有几个重要的接口,需要了解。 init() ——> 在Serv...

一个程序员的一些碎碎念 9660

游戏大厂状态同步与帧同步技术全解析——让虚拟世界万物协同的“时间齿轮”

本文深入解析了大厂游戏开发中的两种核心同步技术:状态同步和帧同步。状态同步适合大型MMO和FPS游戏,由服务端计算并广播世界状态;帧同步则通过统一操作输入实现MOBA和RTS游戏的绝对公平。文章详细比较了两者的差异、适用场景和底层实现原理,并揭秘了《王者荣耀》《PUBG》等热门游戏的同步机制。同时探讨了本地预测、延迟补偿、防作弊等关键技术,以及未来AI和云游戏带来的同步新挑战,为开发者提供了全面的技术参考和实践指南。

本博客聚焦游戏开发技巧、创业实战心得及大学热门课程干货。这里既有技术深度,也有思维广度,无论你是开发者、创业者还是高校学子,都能在这里找到适合自己的成长之路! 923

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

javaWeb与Spring学习小结

前言 由于我是先学的springboot,然后才学spring,接着springMVC,最后才学的javaWeb,内容比较多容易搞混,在此自己进行一个小总结,比较一下它们之间的关系。 javaWeb tomcat服务器会管理我们自定义的servlet,通过web.xml中的servlet-mapping,tomcat能够将不同请求转交给对应的servlet,实现一系列的功能。 filter用于拦截请求,也由tomcat管理,并通过web.xml配置查找对应的filter路径 SpringMVC

DaHuangXiao的博客 2880

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

spring boot 和 spring 先学哪个比较好

spring boot 和 spring 先学哪个比较好前言什么是Spring呢?什么是Spring Boot呢?回归正题 前言 出于实验室的需求,我搁置了对 Spring 的学习,配合实验室先有的后端接口 我学习了近一个半月左右 面向复制粘贴编程 的 SwiftUI,目前为止,项目算是暂时完成了 1.0.0 版本(狗头保命) 什么是Spring呢? Spring框架包含一些很好的功能,如: Spring JDBC 、Spring MVC 、Spring Security、 Spring AOP 、Spri

thinkltxc的博客 6691

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

Spring Boot 要怎么学?要学哪些东西?要不要先学 SSM?松哥说说看法

可能很多刚接触 Spring Boot 的小伙伴都会有这样的疑问,Spring Boot 要怎么学,要不要先学 SSM?今天结合自己的经验,和大家说一说我的看法,也顺便推荐几个 Spring Boot 学习资料。 1.Spring Boot 是什么 我们刚开始学习 JavaWeb 的时候,使用 Servlet/JSP 做开发,一个接口搞一个 Servlet ,很头大,后来我们通过隐藏域或者反射等方...

江南一点雨的专栏 2万+

如何学习 Spring ?学习 Spring 前要学习什么?

学习完java核心技术卷一后该掌握什么知识才能学习spring? 学习完Java基础,想要继续学习JavaWeb的基础,我推荐的是下面这个路线(有帮助,记得点赞!): 一、学习Servlet和Tomcat •Servlet+Tomcat •Tomcat就是这么简单 •Servlet第一篇【介绍Servlet、HTTP协议、WEB目录结构、编写入门Servlet程序、Servlet生命周期】 •Se...

weixin_33937499的博客 1万+

spring学习(上)

1.由问题带入Spring 1.1.早期的架构 刚开始的MVC层架构的模式,创建对象的决定权还是在程序员手中 随着类越来越多,那我们就必须用哪个创建哪个,很费事 所以我们引入了Set方式 我们以这样的方式,将所生成对象的权利交给用户,这样可以大大减少程序员的工作量 1.2.Spring简介 早期的程序员又从中间插入了更多的方式来解决这个问题,在2002年的时候曾出现过一个框架interface21,出现了spring框架的雏形,在不断发展的过程中,在2004年3月24日,基于interface21框

weixin_51024230的博客 242

为什么学习springboot要先学spring

Spring 是 “道”,Spring Boot 是 “术”。不学 Spring 直接学 Spring Boot,可能能快速写出简单应用,但遇到复杂场景会陷入 “只会用 API,不懂原理” 的困境。先掌握 Spring 的底层逻辑,再用 Spring Boot 简化开发,才能真正做到 “知其然,更知其所以然”。

qq_20294455的博客 817

学习规划梳理:要想学习Spirng,那我们在学习Spring之前应该做好哪些准备呢?

要开始学习Spring(以IOC和Spring MVC为核心),只需要做好以下准备即可: 《Java核心技术》前6章。 Java反射原理(选学)。 Servlet。 而想理解上面的结论,则首先必须理解Spring是干什么的。 打开Spring的官方网站,点击projects页面,你会看到一个偌大的结构图。其中列出许多项目,包括:Spring Boot、Spring Cloud 、Spring Data…。对初学来说,乍一看着实吓一跳,完全不知道从何下手。 但透过表现看本质。无论是Spring Data,

S11035762的博客 3585

没有Spring之前,代码原来是这样写的!

最近在看一位前辈的《Spring 开发指南》,才明白原来没有Spring之前,代码是这样写的。这对于我这个一开始学习Java EE编程就使用Spring的菜鸟级程序员来说,是很难理解Spring所带来的巨大便利的。以下是从这本电子书上几乎原封不动搬写下来的代码,作为自己学习Spring 原理的积累。       首先,该项目是由用Myeclipse工具编写的,看一下整个Java 项目的结构图

优快云BenbenChong的专栏 2661
上一篇: Javase第一部分:JDK的安装和环境变量的配置
下一篇: Java学习计划,我把Java系统学习分成两个阶段。
又是一个特殊的一天
博客等级 码龄7年 288粉丝 0原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值