您的位置首页百科问答

Spring Boot

Spring Boot

的有关信息介绍如下:

Spring Boot

SpringBoot是否难用,取决于你对他的设计理念的了解,用对了好用,用错了麻烦。

SpringBoot有两个主要特定:

一是套餐模式,比如开发web,不要去一个一个找依赖,而是直接来个spring-boot-starter-web,这个starter-web套餐含tomcat/spring mvc附赠一系列filter,如果你想用redis,也别找依赖,先上个spring-boot-starter-data-redis套餐。有些开发有洁癖,他就觉得starter-data-redis引入的东西太多而自己只想手动把玩redis怎么办?看starter-redis的依赖,把io.lettuce:lettuce-core挑出来单点就行。

点餐要点:

在点餐前先记住总是点一个spring-boot-starter-parent,这个套餐其实没点任何东西,但你只需要指定一个spring-boot的版本号,就把其他套餐和单点时的版本号全部确定了,这样,后续点套餐和单点的时候,能不写版本号尽量不要写版本号,因为默认版本只要够用,它们冲突的概率就极低。

点餐时优先点默认套餐,即配的可口可乐只要不是特别难喝就别换百事。比如默认redis驱动用的lettuce,就别瞎换jedis,因为换了你还得自己测,默认hikaricp连接池就别换durid,这玩意性能差异对绝大部分应用程序根本无感,换了就得改配置,改配置不麻烦吗?所以口味尽量大众化,别玩小资。

二是自动配置,也就是一看你点的单人餐,自动给安排单座,双人餐自动给安排靠窗,小孩餐自动给安排游乐场边上,这个叫autoconfiguration,由各种Conditaional来决定。

比如点了starter-web的时候,因为大部分web都会操作数据库,所以默认给一个datasource,一个jdbctemplate,一个tx-manager,这样你就不用配任何数据库相关的bean。如果你没用到jdbc-template,也别管他,浪费一点就浪费一点吧,因为要排除它反而比较麻烦,你得找到源码:

然后写EnableAutoConfiguration(exclude=xxx)

自动配置大部分时候都没啥问题,但是遇到特殊情况就需要了解自动配置的原理,比如你想定义两个datasource,就没法用默认的配置了,这个时候就需要EnableAutoConfiguration(exclude = DataSourceAutoConfiguration)排除自动配置datasource,然后手动配两,因为你是手动配了两,参考jdbctemplate的自动配置条件ConditionalOnSingleCandidate(DataSource.class),也就是它不会起作用了,你必须手动配两jdbctemplate。

用自动配置的时候,注意不要自己定义配置文件,要用约定的配置,比如datasource:

如果自己写mycompany.datasource.url=xxx那又得折腾配置。

最后说说SpringBoot最大的优点,就是提供了大量开箱即用的基础设施。

这个优点一开始不是特别明显,因为很多开发只在自己的本地折腾开发环境就感觉麻烦,实际上测试、上线这一系列配置更麻烦。如果用node这些糙快猛的东西写,写着写着你发现还得有一套类似spring-cloud-config这样的配置管理,如果自己去写这些基础设施,业务至少往后推3个月。

参考:

现在大多数网上的教程都是你抄我,我抄你,来源都是Spring Boot的官网。这些教程只是手把手教你怎么搭建一个基于Spring Boot的网站,但基本没有告诉你设计思路。

想要了解Spring Boot的好处,以及为什么把它设计成这个样子,就需要了解它的本体Spring Framework。要了解Spring Framework,以及它产生和变化的原因,就需要有一些它的前辈EJB背景知识。

现在所有的资料都告诉你关于Spring内容就是Dependency Injection (IoC) 和 AOP,让人往往摸不着头脑为什么Spring要如此依赖于IoC和AOP,原因是什么、好处是什么。事实上,IoC和AOP远远早于Spring的诞生,在EJB和传统面向过程的语言中已经广泛应用了。

Spring最重要的是采用了 更好 的IoC和AOP的方式,它是演变自EJB,取长补短。

所有的框架并非一蹴而就,都是经过很长时间的演变。所以我非常推荐去看看《Expert One-on-One J2EE Development without EJB》,作者是Spring Framework的Rod Johnson。前六章讲了架构设计的概念以及吐槽EJB的复杂。后面章节讲的是Spring的设计思路,这本书能够解释你在学习过程中碰到的问题。书虽然老了一些,但是架构问题千古不变,以不变应万变。

spring boot给你使用20%的时间去解决80%的问题,剩下20%的问题需要你用200%的时间去弄懂。

——by:沃·兹基硕德

springboot提供很多隐式的功能,比如auto-config,relax-properties。

如果能「了解」springboot的自动装配功能所有的问题你都能理解。

但是如果不了解,那么你对于如何启用一个功能,如何配置功能将会一头雾水。

springboot的概念是「配置即使用」,其背后依赖两点:「自动装配」和「条件启用」

「自动装配」即是当你的classpath存在对应依赖时对应的自动配置类(@AutoConfiguation)会自动被载入到spring容器内。而这个配置类则来源于那些-starter后缀的依赖中。

然后就到「条件启用」,在装载阶段结束后,「条件启用」功能会根据你当前的配置来确定是否初始化某个Bean(如:RedisTemplate)。这就是为什么你只需要简单几行配置就可以完成以前需要上百行的xml配置。

是很难用啊。

但最核心的问题还在于xml的配置到底是应该规范简化还是取消。

我有点接受不了代码和配置不分离的方式,特别是对JAVA这种需要编译的语言。

maven在这里做的就挺好,约定大于配置的理念,提供强大的功能又不会失去控制。

spring boot是对过度配置寻优方案的一种尝试,但我想应该,或许有别的方式做的更好,比如说强大的代码生成?或者是统一的配置管理中心?

相信在接下来的两年内会有更好的探讨和尝试。

是的,Spring Boot很难用。

其核心原因是Spring Boot(甚至整个Spring)大量采用了“Convention over configuration”约定胜于配置的设计模式。

Spring Boot有大量的机制(比方说配置发现、方法命名等等)依赖于 隐式的约定 。

新手对这些约定不熟悉的时候,就很容易陷入所谓的“撞大运”编程模式,这里改改,那里调调,虽然不知道为什么,但程序就工作了;又或者就不工作了,然后需要耗费大量的时间去debug,或者请教老手。

但实际上,即便是对Spring Boot的隐式约定、各annotation烂熟于心的老手,也可能因为Spring Boot版本的差异,而无法快速定位问题,遇到问题时,也往往只能依赖“面向stackoverflow编程”。

举个例子,我最近在写 Wuvist/easywebmock 的demo时,便遇到了类似的问题:

以上测试代码无法跑通,运行时总是报:initializationError - No runnable methods。

抛出的错误堆栈也根本 不属于 我的应用代码。

折腾很久之后才发现原来新版的SpringBoot修改了API,RunWith(SpringRunner::class)是兼容jUnit4的标签,而我使用了jUnit5 jupiter,需要修改成为ExtendWith(SpringExtension::class)。

而问搜索引擎的话,几乎所有的搜到的文章都是基于旧版的Spring Boot,告诉你这里需要写RunWith。

(实际上新版的SpringBootTest直接包含了ExtendWith标签,这里根本不用写。)

底层框架的API修改升级不是问题,问题而是在于Spring Boot采取了“ 隐式的约定 ”,当底层框架偷偷摸摸把之前的约定改了,上层应用是完全不知道的,编译器根本不会报错;运行时才报错,而错误信息又往往无法准确指定到正确的代码行数。

这些是严重妨碍开发效率的,所以,Spring Boot很难用。

相对于Convention over configuration这个随ruby on rails流行起来的编程原则,其实还有另一句与其相反的“编程箴言”:

可能有朋友会说,Spring Boot采用了约定胜于配置的设计模式,避免了程序员编写繁冗了XML配置文件,其实大大的提高了开发效率。

我想说,配置不是只有 繁冗XML 跟 约定黑魔法 两种选择的,实际上,繁冗的XML配置是Java特有的问题,随便换一个别的语言,配置都没那么难写的。

最低限度,可以比较一下Java世界自身的maven跟gradle,前者需要编辑繁冗的XML,后者则可以写清爽的groovy,嫌groovy太过“黑魔法”,那么现在gradle也支持kotlin的DSL了,虽然还有待成熟。

谢谢 @东东 提醒,原来spring还真搞了个 kofu 项目来尝试使用kotlin解决现有的配置、注解方面的问题:

这里真正的问题在于Spring的容器化思想,它采用了依赖注入的模式来实现代码复用、方便测试等等。

当程序想要复用模块,那么模块必然需要提供配置来供程序做定制化。

模块的功能越多,配置自然也就越多;没有可复用模块,哪来的配置?

但这个话题已经超出了“Spring Boot为什么难用”的问题范畴,我后续会在我的芝士回答专栏 :

里面继续详细写:

欢迎关注。

与其它竞争对手(比如node.js,.NET平台上的类似技术)比起来,是的,Spring Boot就是很难用难学,知识点巨多,学习曲线陡峭……,而这个是有历史渊源的,Java技术一向以“笨重”而著称,就算是自称“轻量级”的,与其它平台的对应技术相比,往往也“重”不少。

“难与易”是相对的,要看和谁比。

比如,你要写过早期的Java EE程序,或者使用过Spring Framework的早期版本,需要手写和维护一堆的XML,你就会感到引入了自动配置之后,Spring Boot其实已经“好用了”、“易用了”不少了。

有意思的是,Java就算一直被人骂,被人挑战,但它在Web后端开发技术领域的地位却仍然“稳如泰山”,“姜还是老的辣”。

学不学Java,学不学Spring,要看你的目的。

想找工作的话,还是要学Java和Spring Boot。至于自己开发干点小活,撸个小网站之类,那还真没必要一定使用Java和Spring。

具体应用场景和需求,决定选用的工具,Java和Spring并非唯一选项。

老生常谈一下。

学一门新技术或新框架,首先要了解开发团队的思想。如果没有新思想,为什么要再造一个轮子呢?跟上创作者的想法转变,才能用起来顺手。如果“用了”新框架,但是还按照自己以前的习惯思路,那就是没“用上”。

思想指导行动。想法转变到和框架一样了,处处顺风顺水。如果思想停留在以前,处处束手束脚。

还有答案不建议看官方文档的。我回答里面的内容都是从官方文档里来的。官方文档非常明确直白的说到了这些。

关于Spring Boot,最好先认清它是什么,再开始用。可以看我下面的回答和文章:

所谓的“不可控”,说白了就是不清楚在不写配置的情况下,框架“背地里”会做什么,说得更直接一点,恐惧源于无知。

不写配置的情况下springboot会使用内置的默认配置,这种方式跟许多其实软件是一样的,可以说是当下普遍认同的最合理的配置方式。就以你提及的redis为例,redis server在安装的时候可以不指定任何参数,那它就会使用默认配置,比方说端口会默认成6379。但是你想自己配置端口的话只需要自己写一个配置文件来设置端口就可以,其他参数不设置就依然使用默认值。如果说因为不知道软件“背地里”会干什么就全部自己写配置的话,那完蛋了,redis几百个配置项算少的了,gitlab server那种的话上万个可配置项,一个个自己弄清楚作用然后自己配,emmm······差不多也就一年应该能配完吧······

Spring Boot采用的默认配置有各种方法可以看到,不符合需求的参数自己在properties里或Java面重写就完事儿了。没有特殊需要的参数推荐还是用默认值把,你自己配真不见得能比默认配置配得好。

说到底SpringBoot是一个以减少开发者工作量为目标的自动化(傻瓜式)框架,但是如果你对它的默认配置实在信不过的话完全可以像SpringMvc一样把所有参数都自己重新配一遍,但我的建议是花更多的时间去熟悉它,理解到了一定程度自然就不会有“不可控”的担忧了。

没错,就像你说的 Spring MVC 虽然配置费事,但是却干净明了。

之所以有这样的体验,并不是因为 Spring MVC 真的就干净明了,而是因为你掌握了 控制权 ,你知道在配置文件中加上哪些配置会产生对应的效果。比如你要配置 redis,对应的,你需要在配置文件中加上 JedisPoolConfig、JedisConnectionFactory、RedisTemplate 相应的 Bean 配置。

而 Spring Boot 所做的就是将这些配置简化,具体的表现形式就是注解。什么地方该用什么注解,通过实际做项目的过程中你自然会知道怎么用。

怎么样让 Spring Boot 乖乖听话呢,答案依然是掌握控制权。你可以控制它,它自然就乖乖听话了。控制它的方式就是了解它的实现原理,它是如果把 Spring MVC 的配置文件转化为注解的,以及你在 application.properties 或者 application.yml 中加的配置项是如何被使用生效的,了解了这个,你也就基本可以控制它了。

我们知道 Spring Boot 是以各种各样的 Spring Boot Starters 被使用的。了解 starter 的实现原理,也就了解了 Spring Boot 的核心。概括来说 starter 就是:

这其中依赖了一个核心功能「自动配置(autoconfigure)」。掌握它的最好方式就是自己实现一个 starter。

实现细节可以通过下面这篇文章看一下,并亲自动手试一下。不动手永远不可能真正掌握。

以上

Spring Boot使编码变简单;

Spring Boot使配置变简单;

Spring Boot使部署变简单;

Spring Boot使监控变简单;

使用Java或Groovy开发基于Spring的应用程序非常容易;

它减少了大量的开发时间并提高了生产力;

它避免了编写大量的样板代码,注释和XML配置;

Spring Boot应用程序与其Spring生态系统(如Spring JDBC,Spring ORM,Spring Data,Spring Security等)集成非常容易;

它遵循“自用默认配置”方法,以减少开发工作量;

它提供嵌入式HTTP服务器,如Tomcat,Jetty等,以开发和测试Web应用程序非常容易;

它提供CLI(命令行界面)工具从命令提示符,非常容易和快速地开发和测试Spring Boot(Java或Groovy)应用程序;

它提供了许多插件来开发和测试Spring启动应用程序非常容易使用构建工具,如Maven和Gradle;

它提供了许多插件,以便与嵌入式和内存数据库工作非常容易;

Spring Boot作为一个微框架,离微服务的实现还是有距离的。

没有提供相应的服务发现和注册的配套功能,自身的acturator所提供的监控功能,也需要与现有的监控对接。没有配套的安全管控方案,对于REST的落地,还需要自行结合实际进行URI的规范化工作。

Spring Boot不仅不难用,而且不难学,事实上,Spring Boot已经成为广大Java程序员的吃饭家伙。 有太多的java初级程序员,是通过Spring Boot+JPA熟悉增删改查的业务,从而步入Java程序员的行列。

1 基于Spring boot的项目,可以用Maven或Gradle的方式,方便地引入依赖包,比如Redis等。

2 基于Spring Boot的项目,可以通过为数不多的注解来实现功能,比如可以通过@SpringBoogApplication和@RestController等注解来开发框架,也可以用JPA注解来连接数据库,也可以用@Entity和@Table注解来定义业务模型类。

3 如果要扩展功能,比如引入日志或单元测试组件,Spring Boot也可以通过简单的引入依赖包和配置来实现此类功能。

正是因为Spring Boot(当然也包括Spring)框架做了很多的封装,程序员才能快速上手学习和使用该框架。没有对比就没有伤害 ,可以对比下Spring Boot和前身SSM框架等的差别。

1 SSM框架里,如果要引入组件,就要配置xml文件,比如要引入数据源,要使用AOP,就得写xml,这种做法当然要比更早的框架要好,但Spring Boot框架可以更方便地通过引入注解来达到此类目的。

2 SSM等框架,需要把项目打包并部署到tomcat等服务器上,而Spring Boot可以直接通过运行启动类来启动。

那么这种封装,会不会让程序员在快捷开发的前提下忽略对Spring Boot底层源码到理解,从而降低项目的质量呢? 或者反过来说,了解Spring Boot底层源码对开发项目有什么帮助?

1 可以了解spring boot的启动流程或各种调用机制,但这似乎对项目的开发帮助不大。

2 可以了解Bean的生命周期,并通过重写其中的回调函数实现某些功能,不过这种情况项目中极少遇到。

3 可以进一步熟悉IOC或AOP等特性。不过这种熟悉也未必能给程序员带来更多的实惠。

4 了解Spring Boot底层源码,并通过改进代码的方式完善Spring Boot框架,不过这种事情一般是大牛做的,和普通程序员无关。

也就是说,了解Spring Boot的细节,比如了解相关底层源码,可能会对面试有帮助,对实际开发帮助不大。而且,初级程序员在升级到资深开发和架构师的时候,可能会需要关注Spring boot如何整合各种组件和集群实现高并发的相关要点,也未必要关注Spring boot的底层源码。

再来说下如何高效地学习Spring Boot?

1 搭建环境,安装jdk,IDEA,IDEA还自带Maven,再安装个MySQL数据库。

2 就通过运行代码,了解Spring Boot的框架,比如控制器层,Service层和Repo层的语法和开发方式。再了解下通过JPA开发数据库业务的做法。

其实做到上述程度,足以达到能在公司里开发项目的程度,当然不同的项目组还需引入不同的组件,比如有的项目组需要引入logback写日志,有些项目组需要引入redis做缓存。但只要掌握了Spring Boot+JPA做基于数据库的增删改查业务,这个是主干,其他的组件使用方式是旁枝末节。

在学习Spring Boot开发项目的过程中,一定首先得掌握流程,在此基础上掌握关键性的语法,在这个阶段,不需要过多地了解Spring Boot的细节,事实上在后继的学习过程中,对spring boot底层源码等细节,也只要知道大致了解即可。

我最近出的这本书,能很好地帮助初学者入门Spring Boot,这本书甚至还被一些高校选做教材。

不过,如果单纯地使用Spring Boot做增删改查业务,估计在小公司干活还行,但老是这样不提升,可能会逐渐失去竞争力,从而被不断入行的程序员所替代。 从这个意义上来讲,Spring boot虽然不难学,但学到增删改查的程度以后,会失去继续进阶的方向。

用Spring Boot入行不难,在用Spring Boot做了两三年开发后,对Spring Boot开发业务的流程能做到熟能生巧,对Spring Boot的常用注解和常用语法也能做到了然于心,此时就应当学习Spring Boot整合分布式组件的技能,进而想办法升级到架构师。 后面该怎么学?

1 对于Spring Boot整合的常用组件,比如redis, mongodb,dubbo,zookeeper,rabbitmq和nginx等,应当先搭建环境,再熟悉Spring Boot整合这些组件的语法。 事实上,在我上位提到的书里,包含了这些技能。

2 在学习Spring Boot整合组件的基础上,进一步熟悉实现高并发的技能,比如搭建集群,限流和熔断等,或者说,通过Spring Boot整合多种组件,实现一个秒杀业务。

3 在此基础上,就可以通过面试,背架构师的题,挑战架构师的岗位了,这属于面试技巧,本文就不再展开了。

也就是说,学Spring boot框架不难,可以分三步走。

1 入门时,学Spring Boot+JPA,掌握开发基本增删改查业务的方式。

2 入门后,可以通过开发多个业务模块,进一步熟悉Spring Boot开发业务的流程,进而全面了解Spring Boot本身的技能。

3 不仅要学Spring Boot的单机版技能,更要学习Spring Boot整合分布式组件,从而应对高并发的技能,这是升级到架构师的关键。

最后祝大家都能全面掌握Spring Boot框架及Spring Boot整合分布式组件的相关技能,并靠Spring Boot挣到更多的钱。也请大家多多点赞我的文章。

springboot的问题在于,他对于大牛和小白最为友好,但对于中间的半瓶水(比如我)极为不友好。

springboot的出现使得“实现一个功能的最短路径”变得非常短,只需要改一些配置文件就能实现。同时对于刚入门的小白,只要按照现有的代码改一些简单的逻辑,加两个controller,service和mapping(dao)就能实现,成为一个初级java开发者的成本极低。

但另一方面,天下没有免费的午餐。

1. 成为一个初级开发者的成本低也就意味着刚成为初级开发者的水平往往不高。

2. 约定大于配置,实现某功能的最优解确实很简单,但在浩瀚的文档中找到最优解,或者从csdn等内容重复的笔记中定位踩在哪个坑里了就需要对spring有一定了解。

3. spring是一个极完善的框架,sprongboot把一些功能以低廉的价格送给了你。但还没到这个水平极容易被噎死。一方面承受了这些功能带来的性能和认知开销,另一方面没有使用这些功能的意识,也找不到一些功能到底是在哪里实现的。

4.spring套娃过于严重,在一大堆traceroute中很难找到真正的问题所在。一个小错误可能导致报错代码卡在某些高级功能上。

5.java语言不够动态,限制了spring的发挥。以至于需要xml或者注解这种方法来实现。

以上是我目前的观点。目前水平很低,有错误能指出来的话感激不尽。

Spring的一堆配置,用起来就好比。我要吃饭,饭是熟的,但是你还要自己加咸菜,配菜,肉,还得自己搅拌,然后才能吃。

但是SpringBoot不一样啊,端上来就是一碗咖喱鸡排饭,上来你就直接吃吧。但是题主的意思是想让人嚼碎了喂?

刚开始学Javaweb的时候,使用 Servlet/JSP开发,那是一个接口搞一个servlet ,简直头大啊。后来通过隐藏域或者反射等方式。可以减少Servlet的创建,但是依然不方便。

后来引入了Struts/SpringMVC这一类框架,目的就是简化我们的开发,和Servlet/JSP相比之下,引入框架之后,生产力是提高了,但是时间久了也能发现, 配置繁琐,非常容易出问题 。要做一个新项目,就要先搭建环境,环境搭建完还要配置,不同的项目就包不一样,其他大部分配置都是一样的。

Java不是一直被喷繁琐吗?后来呢,SpringBoot来了,功能就是:

SpirngBoot是让Java开发回归简单的,我们要知道,一个新的框架出来如果不是解决了开发的真正痛点,绝对不会广泛使用的。从2017年年初开始,SpirngBoot基本上就是面试必问问题了。

现在流行的什么SpringCloud微服务也是基于SpringBoot。

上面只是列出来的常见的技术点,每个技术点可以延伸很多东西,其实里面还会设计了第三方框架。例如 Redis、MongoDB、RabbitMQ 等,Spring Boot 的出现只是让这些组件在和 Spring 家族的产品整合时变得更加方便,但是并不会简化这些组件原本的用法,所以,该学 Redis、该学 MongoDB、该学 RabbitMQ 等等,还是一个不能少。以 Redis 为例,学会了 Redis,学会了 Spring 整合 Redis,再回过头来看 Spring Boot 整合 Redis,那简直太 easy 了。

但是,学习SpringBoot最终我们还是要奔着快速开发和微服务去的,所以像Docker、Spring Cloud等技术也需要了解一下。

Spring Boot 发展到今天,网上的资料和图书现在是越来越多了。在看资料学习的同时,大家也要留意以下几个点:

最后,我这里给大家列举几个我自己经常关注的几个资源。

老实说,Spring Boot 的官方文档是我接触的所有官方文档中最条理清晰浅显易懂的,大家做开发,多多少少都接触过一些第三方的开放平台,很多平台的文档真是让人忍不住想吐槽,框架都做出来了,认认真真写个文档有那么难么?

不过 Spring Boot 的官方文档可以算是非常非常友好了。虽然是英文的,但是实际上对英文要求并不高,连读带猜,其实很容易明白它的含义,我一般对 Spring Boot 中某个知识点有疑问的时候,都是首选官方文档,当前最新版的官方文档地址是:

每次 Spring 或者 Spring Boot 发新版本,我都会去看一下新版本有哪些好玩的东西,增加了哪些内容。我不可能把源码读一遍然后总结出来它的变化,那一般是如何获取权威的第一手信息呢?关注 Spring 官方博客即可。

打开 Spring 官网,在顶部菜单里有一个选项就是 Blog,关于 Spring 家族产品的任何更新计划,更新结果,都会在这里通知到大家。

推荐大家多多关注这个 Blog,一方面能够及时接收到一手信息,另一方面还能提高英语,一举两得。宅在家,泡一壶茶,细细的品一品这个网站,真的蛮不错。

Blog 地址:

说到中文资料,就不得不说黑马程序员的在线教程和离线 pdf 文档了。手敲了 274 页教程,囊括了 Spring Boot2 常见的各种用法,即有离线的 pdf 供大家下载,也有在线的学习网站,这就是满满的诚意,还没下载 pdf 的小伙伴不要错过。

在线教程地址:

除了这些文字性的东西之外,一些在线案例也至关重要。这里给大家推荐两个仓库,这两个仓库中的所有案例都是基于 Spring Boot2 来做的。

GitHub 地址:

Gitee 地址:

这个仓库中的大部分案例都是针对 Spring Boot 的,而且有一个好处就是这些案例都有对应的讲解文章,每个案例都对应一个文章,岂不美哉。

另一个仓库就是我整理的比较完善的一个仓库,但是就没有对应的讲解文章了:

GitHub 地址:

Gitee 地址:

资料贵精不贵多,关键是要动手去学。大学时候,有的同学热衷于收集各种资料,电脑硬盘塞得满满的,但是就是不学,这些资料再多也没有用。

零基础想 快速掌握Java基础语法 ,建议看17天速成: 0基础想学JAVA如何快速入门?

如果 你发愁不知道该怎么学Java ,看这个学习路线图: 2021年全新Java学习路线图

Java相关基础练习题 去哪里找? Java运算符练习题,详细解题思路!

基础内容学习完毕 不会写代码 : 初次接触编程。但是发现自己写代码的能力非常的差,很多问题明明能想通,就是写不出来,怎么提高呢?

学完 基础内容+框架很迷茫 ,建议大家看: Java学完SSM后很迷茫,接下来该学哪些呢?

不知道自己的 Java掌握在什么水平 : 想从事JAVA后端,学完JAVA后再学啥可以满足实习的要求?

最后想跟大家说, 我是 @黑马程序员 认准芝士回答蓝V,所有编程问题免费答疑。欢迎大家有问题留言,祝早日高薪就业!

文章 / Spring Boot 要怎么学?要学哪些东西?要不要先学 SSM?

这样入手Spring Boot的学习,就能让它乖乖听话!

慕课网送你一顿够吃管饱的 Spring Boot 大餐!原价58元的专栏,限时免费领取!

课程内容涵盖了 Spring Boot 的基本使用、最佳实践以及其原理 (做到知其然,还要知其所以然)。当然,在学习 Spring Boot 的过程中还会 结合主流的技术 ( SSM、Redis、MySQL 等),并 分析一些经典的互联网业务场景 (秒杀、各种缓存的应用等)。学完本课程,你将具备使用 Spring Boot 完成一个中小型系统的能力,在研发团队中可以独当一面,成为团队中的核心技术力量!

微信搜“ imooc编程手记 ”即可直接领取!

从事开发行业多年,接触 Spring Boot 也有好多年。回顾这些年,Java Web 一路从 servlet 到 SSH 再到 SSM,每一次的升级,功能不断的增强,我们的开发工作也越来越简洁。曾经以为注解加上 properties 配置文件已经是极致;后来遇到 Spring Boot,才知道没有最简洁,只有更简洁。

我第一次接触 Spring Boot 在 16 年初,当时公司准备重构一个老项目,于是引入了 Spring Boot。那个时候 Spring Boot 在国内的普及率还不高,还不像现在这样火。

近几年微服务越来越火。众多微服务框架也应运而生,国内有阿里的 Dubbo,国外有 Spring 系的 Spring Cloud,还有 Facebook 开发的 Thrift・・・这些年里无论出现了什么微服务框架, Spring Boot 一直都保持着较高的人气。去 Google Trends 上搜索一下 Spring Boot,你就会发现自 2014 年发布至今,Spring Boot 的搜索指数 6 年来一路飙升。这说明啥?说明越来越多的人在关注 Spring Boot。而在各大招聘平台上,与 Java 相关岗位的 JD,基本上都会发现 Spring Boot 的身影。

Spring Boot 可以简化分布式系统的基础设施开发,使开发人员能够更加专注于业务,而效率是互联网时代的制胜法宝。作为一个 Java 工程师,Spring Boot 就是在当今时代跳槽升职的刚需。学 Spring Boot,事不宜迟!

而这,也是我写此专栏的原因。

在这个专栏中,我将带你全面的学习 Spring Boot,从 JavaWeb 的进化史到 Spring Boot,再从实战开发实例到 Spring Boot 的内部原理。整个专栏结构清晰,还原多种互联网技术团队业务开发场景。特别是最后部分的一些个人私货分享,会对你的 Java 开发很有帮助。

有同学问, Spring Boot 已经诞生六年了,那现在才开始学还来得及吗?对于这个问题,我只有一句话 ——

学习 Spring Boot 最好的时间是 6 年前,其次是现在。

讲师刘水镜,CSDN 博客专家,现就职于国内知名 A.I. 公司(To B 服务),曾任世界技能大赛(中国选拔赛)教练兼裁判。讲课通俗易懂,语言风趣幽默,其独特的风格受到学生们的广泛欢迎。

专栏共分为四个部分:入门篇、实战篇、原理篇、番外篇,由浅入深层层递进。

入门篇

道、术、法、器,道为先。如果道错了,那么再好的术、法、器也无用武之地,所以我们要了解学习之道;知其历史才能见其未来,Java Web 的进化史我们也要略知一二;知己知彼方能百战不殆,我们需要对 Spring Boot 有一个宏观上的认识。

实战篇

学以致用从来都是我们遵循的原则,在「实战篇」我将会和你一起解锁使用 Spring Boot 的各种姿势。用丰富生动的实例带你领略 Spring Boot 的各种最佳实践。

原理篇

作为一个有追求的工程师,我们不甘于停留在会用的层面。我们更追求其内部的原理与逻辑,甚至有朝一日创造出属于自己的东西。那么在「原理篇」我将带你搞懂 Spring Boot 核心原理。和你一起分析 Spring Boot 核心源码,做到知其然,也知其所以然。

番外篇

主菜之后,奉上甜点。不仅口感极佳,而且营养丰富。「番外篇」里我将把多年积累的私货,毫无保留的打包给你。不为别的,交个朋友。

适合人群

最后在强调一遍,微信搜“ imooc编程手记 ”即可直接领取!无套路!数量有限先到先得哦~

Spring 几乎是每一位 Java 开发人员都耳熟能详的开发框架,不论你是一名初出茅庐的程序员还是经验丰富的老司机,相信多少都对 Spring 有一定的了解。如今, Spring 技术栈几乎成为了 Java 语言的代名词,也是 Java 开发人员的必备技能。Spring Boot 项目旨在帮助开发者更容易地创建基于 Spring 的应用程序和服务,使得现有的和新的 Spring 开发者能够最快速地获得所需要的 Spring 功能。在 JRebel 发布的 2020 年 Java 技术报告中,Spring Boot 成为最受欢迎的运行时平台,占比达到 83%,完全是独角兽的角色。

一个开发框架能够被这么多公司使用,一定是因为其解决了生产中的很多问题,同时也应该非常方便好用,否则也不会得到这么多公司的认可。

Spring Boot 是与 Spring 一脉相承的,它基本继承了原有 Spring 的知识结构,所以使得 Spring Boot 对于很多 Java 开发者来说,学习成本几乎为零,是非常容易入门的。当然这主要归功于以下几点设计:

Spring Boot 虽然是基于 Spring 构建的,但是通过上面这些特性的支持,改变了我们使用 Spring 的姿势,极大简化了构建企业级应用的各种配置工作,使得我们可以快速学习和使用。

Spring Boot 是否难用,取决于你对他的设计理念的了解,它的两个主要特性:套餐模式即不需要一个一个的找依赖,以及自动配置。当你掌握了这两大特性,那么你就会觉得 Spring Boot 让编程变得前所未有的简单。

编辑 | 随风