如何系统的学习Spring?正确的阅读源码姿势?
如何系统的学习Spring?正确的阅读源码姿势?
-----
网友解答:
-----
Spring框架是一个开放源代码的J2EE应用程序框架,由Rod Johnson发起,是针对bean的生命周期进行管理的轻量级容器(lightweight container)。
Spring解决了开发者在J2EE开发中遇到的许多常见的问题,提供了功能强大IOC、AOP及Web MVC等功能。Spring可以单独应用于构筑应用程序,也可以和Struts、Webwork、Tapestry等众多Web框架组合使用,并且可以与 Swing等桌面应用程序AP组合。
因此, Spring不仅仅能应用于J2EE应用程序之中,也可以应用于桌面应用程序以及小应用程序之中。
Spring框架主要由七部分组成,分别是 Spring Core、 Spring AOP、 Spring ORM、 Spring DAO、Spring Context、 Spring Web和 Spring Web MVC。
其次,无需多言,这张图表很好地解释了 Spring 在 Java 生态系统中的主导地位。10 开发人员中就有 4 能在其应用中使用 Spring Boot,而紧随其后的便是Spring MVC 框架。
Spring是什么意思?
现在,让我们一起来尝试下Spring 快速入门指南吧!
第一步:启动一个新的 Spring Boot 项目
利用启动.spring.io创建一个“网络”项目。在“依赖项”对话框中搜索并添加“web”依赖项,如屏幕截图所示。点击“生成”按钮,下载 zip,然后将其解压缩到计算机上的文件夹中。
创建的项目启动.spring.io包含弹簧靴,一个使 Spring 准备好在您的应用程序中工作的框架,但不需要太多代码或配置。Spring Boot 是启动 Spring 项目的最快和最流行的方式。
第 2 步:添加您的代码
在 IDE 中打开项目并在文件夹DemoApplication.java中找到该文件
src/main/java/com/example/demo。现在通过添加下面代码中显示的额外方法和注释来更改文件的内容。您可以复制并粘贴代码或直接输入。
hello()我们添加的方法旨在获取一个名为 的字符串参数name,然后将该参数与"Hello"代码中的单词结合起来。这意味着如果您“Amy”在请求中将您的姓名设置为,则响应将为“Hello Amy”.
@RestController注释告诉 Spring 这段代码描述了一个应该在 web 上可用的端点。@GetMapping(“/hello”)告诉 Spring 使用我们的方法hello()来回答发送到该
http://localhost:8080/hello地址的请求。最后,@RequestParam告诉 Springname在请求中期待一个值,但如果它不存在,它将默认使用单词“World”。
第 3 步:尝试一下
让我们构建并运行程序。打开命令行(或终端)并导航到您拥有项目文件的文件夹。我们可以通过发出以下命令来构建和运行应用程序:
macOS/Linux:
./mvnw spring-boot:run
视窗:
mvnw spring-boot:run
您应该会看到一些与此非常相似的输出:
这里的最后几行告诉我们春天已经开始了。Spring Boot 的嵌入式 Apache Tomcat 服务器充当 Web 服务器,并正在侦听localhostport上的请求8080。打开浏览器,在顶部的地址栏中输入http://localhost:8080/你好. 你应该得到一个很好的回应,如下所示:
Spring能做什么
微服务
微服务架构是“新常态”。构建小型、独立、可立即运行的应用程序可以为您的代码带来极大的灵活性并增加弹性。Spring Boot 的许多专用功能使您可以轻松地在生产环境中大规模构建和运行微服务。别忘了,没有微服务架构是不完整的春云‒ 简化管理并提高容错能力。
反应性
反应式系统具有某些特性,使其成为低延迟、高吞吐量工作负载的理想选择。Project Reactor 和 Spring 产品组合协同工作,使开发人员能够构建响应式、弹性、弹性和消息驱动的企业级反应式系统。
云
开发分布式系统可能具有挑战性。复杂性从应用层转移到网络层,需要服务之间更大的交互。使您的代码“云原生”意味着处理12因子诸如外部配置、无状态、日志记录和连接到支持服务等问题。Spring Cloud 项目套件包含使用应用程序在云中运行所需的许多服务。
网络应用程序
Spring 使构建 Web 应用程序变得快速而轻松。通过删除与 Web 开发相关的大部分样板代码和配置,您可以获得一个现代 Web 编程模型,该模型可以简化服务器端 HTML 应用程序、REST API 和基于事件的双向系统的开发。
无服务器
无服务器应用程序利用现代云计算功能和抽象让您专注于逻辑而不是基础设施。在无服务器环境中,您可以专注于编写应用程序代码,而底层平台负责扩展、运行时间、资源分配、安全性和其他“服务器”细节。
事件驱动
事件驱动的系统反映了现代企业的实际运作方式——每天都在发生成千上万的小变化。Spring 处理事件并使开发人员能够围绕它们构建应用程序的能力意味着您的应用程序将与您的业务保持同步。Spring 有许多事件驱动选项可供选择,从集成和流式传输一直到云功能和数据流。
批
批处理高效处理大量数据的能力使其成为许多用例的理想选择。Spring Batch 行业标准处理模式的实现使您可以在 JVM 上构建健壮的批处理作业。从 Spring 产品组合中添加 Spring Boot 和其他组件可让您构建任务关键性批处理应用程序。
重要提醒: Spring 中国教育管理中心已携手 VMware 全球最新 Spring技术和认证体系,帮助中国院校构建专业教学内容,全面赋能未来开发人。
Spring Professional认证旨在测试和验证学生对 Spring 和 Spring Boot核心方面的理解和熟悉程度,例如:配置、组件扫描、AOP、数据访问和事务、REST、安全、自动配置、执行器、 Spring boot测试等。
-----
网友解答:
-----
如何系统的学习Spring,以我15年J2EE教学和开发经验来说,首先要清楚Spring的概念和特性,以及在JavaEE框架中起到的作用。在此基础上再开展学习。(欢迎转发)
(1) Spring概念
Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架
目的:解决企业应用开发的复杂性
功能:使用基本的JavaBean代替EJB,确保开发的简单性、可测试性和松耦合性;同时提供更多的企业应用功能
范围: Spring的用途不仅限于服务器端的开发。从简单性、可测试性和松耦合的角度而言,任何Java应用都可以从Spring中受益
(2)Spring特性
Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架。不管是SSH,还是SSM,都是由Spring通过IOC和AOP来对对象和对象组装关系进行统一管理。所以学好Spring,就是要学好IOC和AOP。看代码,看Spring源码,都是以这两者为核心。
轻量——从大小与开销两方面而言Spring都是轻量的。完整的Spring框架可以在一个大小只有1MB多的JAR文件里发布。并且Spring所需的处理开销也是微不足道的。此外,Spring是非侵入式的:典型地,Spring应用中的对象不依赖于Spring的特定类和接口。
控制反转——Spring通过一种称作控制反转(IoC)的技术促进了松耦合。当应用了IoC,一个对象依赖的其它对象会通过被动的方式传递进来,而不是这个对象自己创建或者查找依赖对象。
面向切面——Spring提供了面向切面编程(AOP)的丰富支持,允许通过分离应用的业务逻辑与系统级服务(例如权限、日志和事务管理等)进行内聚性的开发。应用对象只实现它们应该完成的业务功能,不考虑其它的系统级关注点,例如日志或事务支持。
容器——Spring包含并管理应用对象的配置和生命周期,在这个意义上它是一种容器,可以配置每个bean如何被创建(bean可以创建一个单独的实例或者每次需要时都生成一个新的实例),以及它们是如何相互关联的。
框架——Spring可以将简单的组件配置、组合成为复杂的应用。在Spring中,应用对象被声明式地组合,典型地是在一个XML文件里。Spring也提供了很多基础功能(事务管理、持久化框架集成等等),将应用逻辑的开发留给了你。
(3)Spring带来了复杂的J2EE框架开发的春天。
Spring具有如下优点:
低侵入式设计,代码的污染度低;
独立于各种应用服务器,基于Spring框架的应用,可以真正实现Write Once,Run Anywhere;
Spring的IoC容器降低了业务对象的耦合性;
Spring的AOP支持允许将一些通用的功能(权限、事务、日志等)等集中处理,提升了复用性,同时让开发者集中精力于业务功能的处理实现;
Spring的ORM和DAO提供了与第三方持久层框架的良好整合,并简化了底层的数据库访问;
Spring是高度开放的,开发者可以自由选择Spring框架的部分或全部。
(4)目前最流行的Java EE开发框架是SSM,这时就需要以Spring为核心配置与管理工具,掌握spring和spring-mvc进行整合,Spring和mybatis进行整合与配置的方法。才能从容进行基于SSM的Java EE项目的开发。
(5)SpringBoot
目前很火的SpringBoot也是以Spring为基础,它是主要面向web服务,也就是微服务开发的。这个又是另外一个话题了。先学好Spring没错的。
刘嵩
2020.5.19
-----
网友解答:
-----
spring简介:是一个开源框架,是为了解决企业应用程序开发复杂性而创建的。框架的主要优势之一就是其分层架构,分层架构允许您选择使用哪一个组件,同时为 j2ee 应用程序开发提供集成的框架。
spring学习方法:
一、首先java的基础、面向对象的基础和设计模式的基础知识是必不可少的。 关于设计模式我觉得不用学太多,但以下三个模式是学习spring必不可少的:factory模式(包括简单工厂和抽象工厂), 策略模式,模板方法模式。如果不掌握这些你就根本没法领悟spring的精髓,只能依样画葫芦地照搬,这是很可怕的事。 我这里强烈建议的书可能让人有点意外,那就是expert one on one j2ee design and development的第四章,这一章不仅仅是spring初学者,而是任何搞java开发的人必读的一章。经典!
二、接下可以看一些spring的入门书籍 其实我自己没怎么看过这方面的书,我当时只看过spring的reference,不过现在这方面的书好象多的是,而spring reference看起来还是有些吃力的。入门书应该是spring live或spring in action。
三、研究几个用spring做的开源项目 理论还是要与实际结合,所以看完书后是要看实际的项目的。很多人喜欢appfuse,我觉得appfuse花的东西太多,真正实质性的内容又太少。我更喜欢spring自带的jpetstore,这是一个非常完整的例子,看完后spring的基本用法应该都能掌握。四、开始做实际的项目 在上述这些都完备以后,我觉得应该要去实际项目中锻炼了。当然并不是每人都有这样的机会的,这时只能自己做个玩具项目啦。项目的锻炼是非常关键的,其实每个人都清楚,我就不重复了。
五、继续深入学习 经过项目的锤炼,对spring的用法和原理有了一定的了解的时候,才有可能真正掌握spring的精髓。这时要读的书才是rod johnson的三本经典名著,分别是: expert one on one j2ee design and development expert one on one j2ee without ejb professional java development with springframework 前两本书的经典程度我就不说了,只有读了它们,才能真正了解spring的设计意图,掌握spring的精髓。 第三本书是我强烈不建议初学者读的书。里面的东西深入而全,但是原理讲解得又不够深,很容易让初学者犯迷糊。但是却是spring的高级用户必读的一本书。
六、分析源代码,扩展spring 有人认为没有必要分析spring的源代码,因为这是很累人又不计好的事。但是要想成为spring的高级用户,这是必经的阶段。在学习的过程中,我们学到的不仅是spring,更重要的是他的设计思想。不管怎样,看牛人的源代码是绝对有好处的。不过这是一个很累人的过程,要有思考准备。
-----
网友解答:
-----
年轻人,不要卷了
------------------
推荐阅读:
喜鹊的天敌是什么?老鹰这种猛禽都不捕食喜鹊,为什么没泛滥成灾?
下一篇: 金陵十二钗正册都有谁?