为什么SpringBoot如此受欢迎,以及如何有效地学习SpringBoot?

SpringBoot是最流行和使用最广泛的Java框架。 有时这种讨论“为什么SpringBoot如此受欢迎?” 来我和我的朋友/同事之间。 另外,我确实收到了许多人发来的电子邮件,询问“春天很大,如何快速学习?” 。 在这篇文章中,我将尝试回答这两个问题。

为什么SpringBoot如此受欢迎?

Spring和SpringBoot受欢迎的原因可能有很多,但我认为以下是主要原因:

1.大幅提高开发人员的生产力

SpringBoot强大的自动配置机制使基于Spring的应用程序入门非常容易。 更重要的是,SpringBoot提供了各种启动器,对于许多应用程序来说已经足够了。

您只需创建一个项目,选择Web,Spring Data JPA / Mongo等,H2 / EmbeddedMongo,Spring Data REST启动器,然后创建您的域实体和存储库,即可创建由数据库支持的REST API。 就这样,您就拥有了一个功能齐全的REST API。

这降低了新手的入门门槛,对于那些熟悉如何手动配置所有这些功能(可能已经完成了100多次)并且厌倦了编写此样板的人来说,SpringBoot就是一件礼物。

2.简化的高层抽象

Spring和SpringBoot的主要目标之一就是使事情变得容易。 Spring产品组合具有自己强大的Web MVC框架,Spring Security框架,但其其他大多数项目都是为了提供更高级别的抽象,以使使用它们更加容易。

例如,Spring Data JPA通过提供API来执行CRUD操作,排序,分页,而无需自己实现所有这些功能,从而使使用JPA非常容易。

Spring AMQP或Spring for Kafka提供了更高级别的抽象,因此您可以轻松使用RabbitMQ或Kafka,而无需编写低级的样板代码。

3.微服务和云原生友好

微服务架构是当前最新的热门趋势,许多组织更喜欢微服务架构,并希望将它们部署在AWS,CloudFoundry等云环境中。

通常,SpringBoot应用程序是作为独立的部署单元(FAT Jar)构建的,使用其Profiles概念,我们可以在多个环境中部署相同的应用程序而无需更改任何代码。 除此以外,SpringCloud模块还提供了构建Cloud Native微服务所需的大量功能。

4.满足现代业务需求

现代应用程序需求已发生变化,并且瞬息万变。 我们等不及3到4年的发布周期才能获得新功能。 我们需要具有快速发布周期的框架来支持这些业务需求。

Spring的核心只是一个依赖注入(DI)容器。 但是Spring的力量来自其丰富的投资组合项目。 您想要使用NoSQL数据库,想要一个健壮的安全框架,想要与Social平台集成,想要与Big Data框架一起使用,想要使用像Kafka这样的Streaming平台……涵盖了所有内容。

5. Spring开发者社区

这是Spring框架的最佳组成部分。 您可以在Spring框架上找到100万个博客,其中包含许多精彩的博客文章。 您几乎可以在StackOverflow上找到解决每个问题的解决方案。 您可以通过Twitter轻松地与Spring Developer团队联系。

Spring和SpringBoot面临的挑战

当我与某些人(初级和有经验的开发人员)交谈时,他们常说的一句话是“春天是巨大而复杂的”。 但是我对此有完全相反的意见。 在与他们更多地谈论了他们为什么觉得Spring如此复杂之后,我理解了他们为什么会有这种感觉。 这就是为什么我觉得学习JavaScript框架很复杂的原因。

时不时地,我很想学习NodeJS和一个闪亮的新JavaScript框架(如ReactJS或VueJS等)。首先,我尝试列出要学习的东西,以便我有一个基准来说我对NodeJS /有相当的了解。 ReactJS等。花了4到6个小时,并且知道有36,794种方法可以用JavaScript进行任何操作,但我迷失了这片JavaScript工具和选项。 然后我觉得JavaScript很复杂。

我应该做的是停止追逐所有框架/工具,并首先学习准系统JS或ES6,选择一个框架(例如ReactJS)和一个构建工具(如WebPack),然后学习如何正确地一起使用它们。

除了对Spring的感觉是巨大而复杂之外,我还看到了人们说SpringBoot复杂的以下原因:

  1. 人们无需具备任何Spring知识即可直接跳到SpringBoot ,一切看起来都很神奇。 只要使用默认设置,它就可以很好地工作,并且您需要自定义它。
  2. 选择太多。 当您在某个与Spring相关的问题上寻求帮助时,您总是会找到100个解决方案来解决,这令人困惑。
  3. 恕我直言, 某些Spring模块很复杂。 有时候,我不得不更深入地研究Spring Security源代码,我觉得它非常复杂,因为它具有适用于几乎所有内容的自定义钩子。

如何有效地学习Spring和SpringBoot?

我将为您提供一些学习Spring和SpringBoot的技巧,基本上就是我在学习它们时所遵循的技巧。

1.反复学习

我认为没人能一口气学习框架的所有知识。 我遵循一种迭代方法。

迭代1:遵循一些快速入门指南,并创建一个具有所有依赖项的项目,并构建一个Todo应用程序(Todo是新的HellowWorld权利:-)。 成功运行示例应用程序时,它会给您信心。

迭代2:阅读官方文档
了解此特定框架要解决的问题以及该框架在什么情况下合适以及在何处不是一个很好的选择,这一点非常重要。 在这方面,Spring框架文档很棒而且太长(超过800页):-)。

迭代3:构建中等复杂的应用程序

迭代4:深入研究框架的源代码,并了解如何自定义框架

2.首先,学习Spring Core框架

如果您不了解Spring,请不要跳到SpringBoot上。 我强烈建议您首先学习没有SpringBoot的Spring框架,以便您了解SpringBoot在幕后的作用。

熟悉Spring DI概念,范围,注释,生命周期回调,bean配置样式(注释,@ Beans等)。 知道Spring如何使用模板模式(JdbcTemplate,JmsTemplate等)来避免编写样板代码。

3.了解SpringBoot自动配置的工作方式

SpringBoot的强大功能来自其自动配置机制,这并不是魔术。 学习Spring的@Conditional功能并探索一些SpringBoot的AutoConfiguration类,例如DataSourceAutoConfiguration,JpaAutoConfiguration等,您可以轻松地了解SpringBoot如何根据某些条件自动创建bean。

您可以阅读有关SpringBoot AutoConfiguration魔术如何工作的博客文章 此处https://sivalabs.in/2016/03/how-springboot-autoconfiguration-magic/

4.关注社区并阅读博客

这是Spring框架的最佳组成部分,是一个庞大的社区,并且有成千上万的关于Spring的博客。 找到这些很棒的Spring博客的一种简单方法是, 每周二的Josh Long( @starbuxman )发表于Spring Blog的本周系列文章中。

5.练习,练习和练习

没有什么可以取代“实践”。 无论您阅读多少,在YouTube上观看了多少Spring视频。最好的学习方法是使用它。

这些天,我几乎看不到Java项目不使用Spring和SpringBoot。 您可以在从事该项目的同时学习,但是我强烈建议创建一个Pet项目并使用各种Spring组合项目来实施。

毕竟,学习仍然需要一些时间。 花一些时间来掌握它。 耐心一点。 如果遇到困难,请与他人联系。 阅读书籍和博客。 练习,练习和练习。

我希望它会有所帮助,并在您喜欢的情况下分享!

翻译自: https://www.javacodegeeks.com/2018/02/springboot-popular-learn-springboot-effectively.html

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

支持linux系统摄像头模块,在Linux操作系统上使用摄像头

我的公家笔记本的摄像头一直没啥用,偶尔用 vmware player 2.0模拟个 msn 用(其实到目前一次都没用过)。搞过安全对这东西严重不信任通常都不驱动,忽然想起重案6组那个警察兄弟说搞高科技的最怕高科技产品。linux 下一直没装,晚上闲着没啥事&a…

Java实现复数Complex的加减乘除运算、取模、求幅角角度

前些天发现了十分不错的人工智能学习网站,通俗易懂,风趣幽默,没有广告,分享给大家,大家可以自行看看。(点击跳转人工智能学习资料) /*** Author: Yeman* Date: 2021-09-23-9:03* Description:*/…

linux 域账户密码忘记,linux基础命令-用户域用户组管理

//与用户相关的配置文件:/etc/passwd: #用户的配置文件, 保存用户账户的基本信息/etc/shadow #用户影子口令文件一、用户帐号文件——passwd1.“/etc/passwd”文件是UNIX安全的关键文件之一。该文件用于用户登录时效验用户的登录名、加密的口令数据项、…

Java集合(8)--集合工具类Collections

Collections 是一个操作 Set、List 和 Map 等集合的工具类。 Collections 中提供了一系列静态的方法对集合元素进行排序、查询和修改等操作,还提供了对集合对象设置不可变、对集合对象实现同步控制等方法。 排序操作 reverse(List):反转 List 中元素的顺…

Java程序员应在2018年学习的3种JVM语言

如果您是Java程序员,并且想学习更多的编程语言以扩展您的知识和技能,但是不确定选择哪种编程语言,那么您来对地方了。 在本文中,我将分享Java程序员可以在2018年学习的3种JVM语言以及为什么要学习它们。 成为多语种开发人员的素质…

Java泛型(1)--集合使用泛型Generic、自定义泛型、泛型在继承上的体现、通配符的使用

文章目录泛型的概念集合中使用泛型自定义泛型结构泛型在继承上的体现通配符的使用泛型的概念 集合容器类在设计阶段/声明阶段不能确定这个容器实际存的是什么类型的对象,所以在JDK1.5之前只能把元素类型设计为Object,JDK1.5之后使用泛型来解决。因为这个…

linux 内存 面试,【Linux内存面试题】面试问题:查看机器配置命… - 看准网

1、查看内存大小solari:prtconf -vp | grep Memlinux :grep MemTotal /proc/meminfo2、查看硬盘大小solari:df -klinux :fdisk -l[rootssoldap ~]# fdisk -lDisk /dev/sda: 146.6 GB, 146685296640 bytes255 heads, 63 sectors/tr…

蚂蚁组件 axure 蚂蚁_蚂蚁属性细微差别

蚂蚁组件 axure 蚂蚁每隔一段时间,我会想起Ant属性的一些细微差别 ,一旦忘记它们,在与Ant交互时会引起混乱。 特别是, Ant属性 通常是不可变的 (不包括Ant 1.8以来的局部属性 ),并且在其第一次设…

JavaIO流(1)--File类的使用

文章目录File类概述常用构造器常用方法File类概述 File类能新建、删除、重命名文件和目录,但不能访问文件内容本身,如果需要访问文件内容本身,则需要使用后续的输入/输出流。 要在Java程序中表示一个真实存在的文件或目录,那么必…

linux抓包提示没有权限,linux下wireshark不用sudo权限抓包包

ubuntu安装了wireshark,发现打不开网络接口,后来从网上得知要用sudo从命令行执行,确实可以,但是执行过程中一直要开一个命令行窗口,不爽,想直接用单击图标的方法运行之,在网上查询找到以下两个方…

Http基本身份验证在Spring Security中如何工作?

在上一篇文章中,您学习了如何在基于Spring安全性的Java应用程序中启用Http基本身份验证 ,现在,我们将进一步进一步了解http基本身份验证在Spring安全性中的工作原理。 如果您还记得的话,当您使用HTTP Basic进行身份验证时&#xf…

JavaIO流(2)--IO流原理、流的分类及节点流文件流操作

文章目录IO流简介IO流原理流的分类IO 流体系节点流和处理流节点流操作IO流简介 I/O是Input/Output的缩写, I/O技术是非常实用的技术,用于处理设备之间的数据传输。如读/写文件,网络通讯等。 Java程序中,对于数据的输入/输出操作…

linux权限体系有哪些角色,详解Linux下系统权限

一、权限概述1. 什么是权限权限:在计算机系统中,权限是指某个计算机用户具有使用软件资源的权利。软件资源:Linux系统中,一切皆文件!SO,这里的软件资源就是文件资源。所以,我们今天所讲的权限&a…

试用期java_Java 7试用资源

试用期javaJava 7为完成使用后需要关闭的资源(例如文件,流,数据库连接和套接字)提供了更好的资源管理。 这种语言构造称为try-with-resources语句。 完成这项工作的机制称为AutoCloseable接口。 Java 7资源类均实现此接口。 该接口…

让你的对象跑出内存,写入到磁盘或者进行网络传输,一文掌握Java对象序列化

文章目录对象序列化是什么如何让对象可序列化让对象跑出内存对象序列化是什么 对象序列化机制允许把内存中的Java对象转换成平台无关的二进制流,从而允许把这种二进制流持久地保存在磁盘上,或通过网络将这种二进制流传输到另一个网络节点。当其它程序获…

JDK 9:NotNullOrElse方法已添加到Objects类

JDK 9向Objects类添加了一些新方法&#xff0c;包括本文中突出显示的两个static方法&#xff1a; requireNonNullElse&#xff08;T&#xff0c;T&#xff09;和requireNonNullElseGet&#xff08;T obj&#xff0c;Supplier <&#xff1f;extended T>供应商&#xff09;…

linux下删除只读文件,linux – 我无法删除文件’rm:无法删除X只读文件系统’

我正在尝试删除rdiff备份文件夹,因为备份过程中出现了一些问题,需要删除它的历史记录并重试.但是,当我跑&#xff1a;rm -r -f rdiff-backup-data我在一些文件上得到以下内容&#xff1a;rm: cannot remove X: Read-only file system这是我运行mount时得到的&#xff1a;/dev/s…

让你的数据和对象有源有出路,一文打尽,Java常用IO流处理流(处理字节流文件流)缓冲流、转换流、对象流等

文章目录缓冲流转换流标准输入输出流打印流数据流对象流随机存取文件流Java NIO缓冲流 为了提高数据读写的速度&#xff0c;Java API提供了带缓冲功能的流类&#xff0c;在使用这些流类时&#xff0c;会创建一个内部缓冲区数组&#xff0c;缺省使用8192个字节(8Kb)的缓冲区。 …

异步重试_异步重试模式

异步重试当您有一段经常失败且必须重试的代码时&#xff0c;此Java 7/8库提供了丰富且简洁的API以及针对此问题的快速且可扩展的解决方案&#xff1a; ScheduledExecutorService scheduler Executors.newSingleThreadScheduledExecutor(); RetryExecutor executor new Async…

linux网卡e1000下载,Linux E1000网卡驱动分析

本分析主要针对e1000网卡,驱动源码为7.3.20-k2。本文的目的不是为了讲述如何编写驱动程序,主要是分析网卡驱动内部的实现机制。Linux-千兆网卡驱动实现机制浅析作者: Minit, 出处:博客, 责任编辑: 罗丽艳,2009-03-29 00:001.引言本分析主要针对e1000网卡&#xff0c;驱动源码为…