Spring & Spring Boot

Spring

一、Spring 要解决的核心问题

IOC(控制反转)或者DI(依赖注入)是Spring的核心能力,当IOC或者DI被适当的使用的时候,我们就能够创建具有松耦合度的程序。松耦合度具有很多的好处,对象之间如果具有松耦合度,以目前的经验看来,能够更方便的进行单元测试,并且使得程序对于修改不敏感,当修改功能的时候而不至于牵一发而动全身。关于松耦合的设计的好处肯定远远不止这些,可以作为另外一个点作为研究。

因此,可以看出,Spring所要解决的核心问题就是对象之间的解耦,使得程序获得松耦合的设计带来的各种好处。

这里遗留了一个问题:

为什么松耦合度的程序更加便于测试?

二、Spring解决的其他问题。

  1. 重复的模板代码。

    Spring JDBC 以及 Spring JMS是构建的Spring Core之上的两个模块,他们都解决了重复模板代码的问题,以Spring JDBC为例,它将重复的JDBC编程操作进行了框架级别的封装,使得程序开发者能够简化数据库编程的重复代码。

  2. 与其他的框架很好的集成。

    Spring没有去解决现在已经解决的很好的问题了,一些框架已经在他们的领域当中很好的解决了一些问题,Spring选择了与他们共生,开发者可以很方便的将这些框架与Spring进行集成,从而利用这个以Spring为核心的框架组合去提高开发效率。共赢的思想在这点上很好的提现出来,可见Spring的决策层具有很好的大局观。

Spring Boot

纵然Spring已经能够为我们提供种种我们所需要的功能了,但是它依然还是不完美的。基于Spring的程序需要进行很多的配置。比如我们要开发web应用程序,我们需要考虑使用哪些Spring模块以及其他的框架,并且还需要考虑框架之间的版本是否兼容。除此之外,我们还要进行大量的基础配置,配置来配置去,这种重复操作总会让人闻到一股怀味道。

Spring的开发者们注意到了这些问题,于是Spring Boot诞生了。

Spring Boot通过两个方式使得我们从上述的重复操作中得以解脱:

  • Spring Boot Auto Configuration
  • Spring Boot Starter Project

一、Spring Boot Starter Project

Spring Boot像是一个大管家,我们只需要告诉他,我们要做什么类型的程序,由他来负责帮助我们去做具体的事情。还是以web开发为例,我们只需要告诉Spring Boot我要干一个web项目,去给我准备相关的东西,Spring Boot就会去干事了。具体到操作上就是,我们提供给Spring Boot一个spring-boot-starter-web的选项,Spring Boot就会知道我们的意思,然后为我们搞生成出来一个工程,这个工程就已经具备了所有web应用程序开发所需要的所有依赖,完全没必要我们自己再去到pom中手动配置。Spring Boot的文档是这样解释的:

Starters are a set of convenient dependency descriptors that you can include in your application. You get a one-stop-shop for all the Spring and related technology that you need, without having to hunt through sample code and copy paste loads of dependency descriptors. For example, if you want to get started using Spring and JPA for database access, just include the spring-boot-starter-data-jpa dependency in your project, and you are good to go.

二、Spring Boot Auto Configuration

除了自动管理项目依赖之外,Spring Boot也提供了自动配置的能力。

当我们开发web应用程序时,我们需要在xml中或java以代码的形式来配置基于Spring的开发环境。比如我们需要配置Dispatcher Servlet、DataSource、ViewResolver等等这些必须的bean,这些操作每次都是重复的,所以Spring Boot就把它们也自动化掉了。Spring Boot会检测ClassPath当中的jar包,如果包含了web开发所需要使用jar包(Spring MVC),Spring就会把上述所说的配置都配置好,不用我们再去配置。同样贴上官方的解释:

Spring Boot looks at a) Frameworks available on the CLASSPATH b) Existing configuration for the application. Based on these, Spring Boot provides basic configuration needed to configure the application with these frameworks. This is called Auto Configuration.

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 205,132评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,802评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,566评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,858评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,867评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,695评论 1 282
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,064评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,705评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,915评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,677评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,796评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,432评论 4 322
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,041评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,992评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,223评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,185评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,535评论 2 343

推荐阅读更多精彩内容