重学Spring Boot(一) 我为什么要学Spring Boot

814 阅读4分钟

学这些理论知识真的非常枯燥, 纵然我有一颗很强的求知欲, 但确实也经常感觉块顶不住了, 曾经一度怀疑自己的学习方法是否存在问题, 一度搜索这一类问题 "我该如何学习XXX", 看了里面的回答后, 便按照里面的方法来学一会儿, 自欺欺人罢了.

今天无意间看到一篇文章, 里面讲到了学习一个技术之前, 你应该问自己的三件事

这项技术是什么,为什么我要学习这项技术,学习了这项技术有什么好处。

如果你在学习某项技术的时候无法回答上面的三个问题。再过几天,你很大程度上会忘记这项你所“学过”的技术。比如说,如何你连“为什么要用多线程”你都无法用通俗的话来解释清楚。即便你当时学习的时候知道多线程可以用xxx方式来创建,多线程的xxx的api。那再过两个月,人家问你”Java多线程有什么用啊?”。你想想你还能答什么,我认为你是记不住“多线程可以用xxx方式来创建、多线程的xxx的api”这些知识点了。再比如说,如果学习Spring时不知道IOC和new对象有什么区别,那我为啥不直接new对象而要那么麻烦去学Spring呢?

于是我换了一种方法问自己, 我为什么要学Spring Boot?

我的答案很纯粹, 我想自己做一个能拿得出手的项目, 不是那种控制台下的贪吃蛇, 也不是那种低配版连连看.

我想讲我对分布式系统的热爱落地, 在spring cloud 中发挥它的作用, 但学spring cloud还是得先学spring boot.

接下来, 我依次回答那三个问题.

1. Spring 是什么?

一个利用了IoC(控制反转)和DI(依赖注入)降低了各个模块间的耦合性, 简化应用开发的轻量级框架

2. 我为什么要学它?

上面已经说了.

3. 学了它有什么好处呢?

这里spring团队已经在官网告诉了我们答案

Spring是一个非侵人性(non-invasive)框架,其目标是使应用程序代码对框架的依赖最小化,应用代码可以在没有Spring或者其他容器的情况下运行。 Spring提供了一个一致的编程模型,使应用直接使用POJO开发,从而可以与运行环境(如应用服务器)隔离开来。 Spring推动应用的设计凤格向面向对象及面向接口编程转变,提高了代码的重用性和可测试性。 Spring改进了体系结构的选择,虽然作为应用平台,Spring可以帮助我们选择不同的技术实现,比如从Mybatis切换到其他ORM工具,从SpringMVC切换到Struts,尽管我们通常不会这样做,但是我们在技术方案上选择使用Spring作为应用平台,Spring至少为我们提供了这种可能性和选择,从而降低了平台锁定的凤险。

谈谈IoC容器

spring的核心就是IoC. 也就是Spring反向控制应用程序需要的资源, DI就是应用程序依赖Spring为其提供资源

打个比方来讲,使用IoC后相当于IoC就是一个饮品店;以前的我们需要自己new对象,也就是需要自己买橙子,买榨汁机来榨果汁喝;而是用IoC后,我们只需要把需求(想喝橙汁)告诉它,然后由它给我们提供橙汁就可以了。

谈谈spring boot

springboot这个东西,与其说叫框架,不如说叫脚手架。它的核心内容无非是starter思想,将各种框架通过starter的标准装配结合起来。比如说mybatis想在springboot里用就得有mybatis的starter,你自己写的组件如果想用springboot的想法去装配那就得自己封装一套starter。把装配原理搞明白之后,其实springboot除了自集成web容器之外,也就没剩下啥东西了