国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

有了Spring為什么還需要SpringBoot呢

這篇具有很好參考價值的文章主要介紹了有了Spring為什么還需要SpringBoot呢。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

目錄

一、Spring缺點分析

二、什么是Spring Boot

三、Spring Boot的核心功能

3.1 起步依賴

3.2 自動裝配


一、Spring缺點分析

1. 配置文件和依賴太多了?。?!

spring是一個非常優(yōu)秀的輕量級框架,以IOC(控制反轉(zhuǎn))和AOP(面向切面)為思想內(nèi)核,極大簡化了JAVA企業(yè)級項目的開發(fā)。雖然Spring的組件代碼是輕量級的,但它的配置卻是重量級的。使用Spring進行項目開發(fā)需要在配置文件中寫很多代碼,所有這些配置都代表了開發(fā)時的損耗。

就比如下面這個圖片就反映了進行數(shù)據(jù)源配置的時候配置文件有多繁瑣!?。?/p>

有了Spring為什么還需要SpringBoot呢,SpringBoot,spring,spring boot,java,maven,原力計劃

除此之外,Spring項目的依賴管理也是一件耗時耗力的事情。在環(huán)境搭建時,需要分析要導(dǎo)入哪些庫的坐標,而且還需要分析導(dǎo)入與之有依賴關(guān)系的其他庫的坐標,一旦選錯了依賴的版本,隨之而來的不兼容問題就會嚴重阻礙項目的開發(fā)進度。比如Spring5.0以上只能使用Junit4.12以上的版本。?

下圖就很好地詮釋了spring框架開發(fā)的pom文件添加依賴的恐怖之處:

有了Spring為什么還需要SpringBoot呢,SpringBoot,spring,spring boot,java,maven,原力計劃

總結(jié)
Spring的缺點:

  • 配置過于繁瑣。
  • 引入的依賴過多,版本控制復(fù)雜

二、什么是Spring Boot

SpringBoot對Spring的缺點進行改善和優(yōu)化,基于約定大于配置的思想,簡化了Spring的開發(fā),所謂簡化是指簡化了Spring中大量的配置文件和繁瑣的依賴引入。所以SpringBoot是一個服務(wù)于框架的框架,它不是對Spring功能的增強,而是提供了一種快速使用Spring框架的方式。

SpringBoot的優(yōu)點:

  • 配置簡單
  • 依賴引入簡單
  • 提供了一些大型項目的非功能特性,如嵌入式服務(wù)器,安全指標,健康監(jiān)測等。?

三、Spring Boot的核心功能

Spring Boot的核心功能就是起步依賴和自動裝配

3.1 起步依賴

SpringBoot的依賴是基于功能的,而不是普通項目的依賴是基于JAR包的。SpringBoot將完成一個功能所需要的所有坐標打包到一起,并完成了版本適配,我們在使用某功能時只需要引入一個依賴即可。

其原理就是Maven的傳遞依賴,比如說a依賴b,b依賴c,c依賴d,那么如果我們引入了a依賴,剩下的b,c,d的依賴都會被加載進來。

在Spring Boot中,主要通過引入了父依賴,我們點進去看看父依賴引入了什么

有了Spring為什么還需要SpringBoot呢,SpringBoot,spring,spring boot,java,maven,原力計劃

我們可以看到里面繼續(xù)引入了一個父依賴,我們ctrl再點擊看看?

有了Spring為什么還需要SpringBoot呢,SpringBoot,spring,spring boot,java,maven,原力計劃

Ok,我們可以看到這里聲明了許多了依賴的版本,所以這也是Spring Boot引入依賴時不用聲明的版本的原因,在父依賴里面都已經(jīng)全部定義好了。

有了Spring為什么還需要SpringBoot呢,SpringBoot,spring,spring boot,java,maven,原力計劃

3.2 自動裝配

?????SpringBoot項目自動提供最優(yōu)配置,同時可以修改默值滿足特定的要求。

1. 查看注解 @SpringBootApplication 的源碼

有了Spring為什么還需要SpringBoot呢,SpringBoot,spring,spring boot,java,maven,原力計劃

@SpringBootConfiguration等同于@Configuration,代表這是一個SpringBoot的配置類,在spring中叫法是Configuration而已。

@Enable Auto Configuration代表開啟自動配置功能。

2. 讓我們+ctrl點擊@Enable Auto Configuration,看看里面有什么

有了Spring為什么還需要SpringBoot呢,SpringBoot,spring,spring boot,java,maven,原力計劃

3. 從這里我們只能看出@Import注解導(dǎo)入了AutoConfigurationImportSelector類,現(xiàn)在我們再+ctrl看看AutoConfigurationImportSelector里面寫了什么。

有了Spring為什么還需要SpringBoot呢,SpringBoot,spring,spring boot,java,maven,原力計劃

主要就是上面這個getCadicateConfigurations方法,里面調(diào)用了SpringLoaderFactories.loadFactoryNames方法,從調(diào)用改方法返回值是一個configurations集合,就可以猜出該方法主要作用就是獲取所有的配置類。并且在后面有加了一句:

No auto configuration classes found in META-INF/spring.factories. If you are using a custom packaging, make sure that file is correct.

翻譯:在META-INF/spring.factories中沒有找到自動配置類。如果使用的是自定義打包,請確保該文件是正確的。

也就意味著該方法主要在META-INF/spring.factories中找到需要加載的配置類,讀取所有配置類的名稱:

讓我們查看META-INF/spring.factories文件有什么?

有了Spring為什么還需要SpringBoot呢,SpringBoot,spring,spring boot,java,maven,原力計劃

上面配置信息就是存在大量以Configuration結(jié)尾的類名稱,這里類就是存有自動配置信息的類,在SpringBootApplication獲取這些類的名稱后再進行加載。

讓我們以ServletWebServerFactoryAutoConfiguration類為例分析源碼

有了Spring為什么還需要SpringBoot呢,SpringBoot,spring,spring boot,java,maven,原力計劃

這里又出現(xiàn)了一個自動加載:@EnableConfigurationProperties({ServerProperties.class}),代表的是自動加載服務(wù)器配置類ServerProperties,再讓我們ctrl點進去看看

有了Spring為什么還需要SpringBoot呢,SpringBoot,spring,spring boot,java,maven,原力計劃

prefix = "server",代表了Spring Boot配置文件的前綴為server,SpringBoot會將以server前綴開始的屬性自動映射到該類字段中,就比如我們配置網(wǎng)絡(luò)端口的時候設(shè)置server.port = 8080,

如果我們沒有進行配置,則Spring Boot會讀取默認配置信息,而默認配置信息就是放在spring-configuration-metadata.json文件中,如下圖:

有了Spring為什么還需要SpringBoot呢,SpringBoot,spring,spring boot,java,maven,原力計劃

該文件也是存放所有的默認配置信息?。?!

總結(jié)

通過起步依賴和自動裝配使得進行開發(fā)時省去了很多麻煩,不用進行版本的管理,以及進行各種配置,這里在SpringBoot中全部通過自動裝配一步到位。文章來源地址http://www.zghlxwxcb.cn/news/detail-715116.html

到了這里,關(guān)于有了Spring為什么還需要SpringBoot呢的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔相關(guān)法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 為什么有了IP地址,還需要MAC地址呢?

    為什么有了IP地址,還需要MAC地址呢?

    不知道大家有沒有困惑:為什么有了IP地址,還需要MAC地址呢? 他們之間到底有什么聯(lián)系?又有什么區(qū)別?是不是有一個是多余的? 流言傳到了“IP地址”和“MAC地址”的耳朵里,他倆也非??鄲?,今天文檔君把話筒遞給他們,看看他們怎么說? ? ? PART ? 0 1 ? MACIP的自白

    2024年02月06日
    瀏覽(27)
  • 有了MySQL,為什么還要有NoSQL

    有了MySQL,為什么還要有NoSQL

    ? ? ??今日學(xué)習(xí)目標: ??MySQL和NoSQL的區(qū)別 ? 創(chuàng)作者 :林在閃閃發(fā)光 ?預(yù)計時間:30分鐘 ??個人主頁:林在閃閃發(fā)光的個人主頁 ???林在閃閃發(fā)光的個人社區(qū),歡迎你的加入:?林在閃閃發(fā)光的社區(qū) 目錄 noSQL的大概意思 理論支撐 為什么需要NoSQL 為什么NoSQL有處理超大規(guī)模

    2023年04月20日
    瀏覽(26)
  • 為什么有了 HTTP 還要 RPC

    哈嘍大家好,我是咸魚 隨著互聯(lián)網(wǎng)技術(shù)的發(fā)展,分布式架構(gòu)越來越被人們所采用。在分布式架構(gòu)下, 為了實現(xiàn)復(fù)雜的業(yè)務(wù)邏輯,應(yīng)用程序需要分布式通信實現(xiàn)遠程調(diào)用 而這時候就需要一種協(xié)議來支持遠程過程調(diào)用,以便實現(xiàn)不同應(yīng)用程序之間的數(shù)據(jù)交換和信息傳遞。其中常

    2024年02月05日
    瀏覽(31)
  • Java中有了equals(),為什么還有“==“

    Java中有了equals(),為什么還有“==“

    背景:Java中“一切皆是對象”,為什么還有非對象的“==”? 在Java語言假設(shè)我們只進行OOP,所以Java代碼都是由一個接著一個的類組成的。那么,對象之間比較,用equals()就可以了。 可為什么“==”在代碼隨處可見呢? Java是基于C++的,相比與C++,Java是一種更“純粹”的面向

    2023年04月20日
    瀏覽(26)
  • Spring Cloud【分組消費、為什么需要鏈路追蹤 、Spring Cloud Sleuth是什么、微服務(wù)集成Sleuth實現(xiàn)鏈路打標】(十二)

    Spring Cloud【分組消費、為什么需要鏈路追蹤 、Spring Cloud Sleuth是什么、微服務(wù)集成Sleuth實現(xiàn)鏈路打標】(十二)

    ? 目錄 消息驅(qū)動_分組消費 分布式請求鏈路追蹤_為什么需要鏈路追蹤?

    2024年02月14日
    瀏覽(18)
  • 為什么要學(xué)習(xí)Python呢?有了 ChatGPT 還有必要學(xué)習(xí) python 嗎?

    為什么要學(xué)習(xí)Python呢?有了 ChatGPT 還有必要學(xué)習(xí) python 嗎?

    學(xué)習(xí) Python 的原因有很多,以下是一些常見的原因: 簡單易學(xué): Python 是一門易于學(xué)習(xí)的編程語言,語法簡單、清晰明了,可以快速掌握基本的編程概念。 應(yīng)用廣泛: Python 是一門通用的編程語言,可用于 Web 開發(fā)、數(shù)據(jù)分析、機器學(xué)習(xí)、人工智能、游戲開發(fā)等多個領(lǐng)域。 巨

    2024年02月03日
    瀏覽(22)
  • 拆解Spring boot:Springboot為什么如此絲滑而簡單?源碼剖析解讀自動裝配

    拆解Spring boot:Springboot為什么如此絲滑而簡單?源碼剖析解讀自動裝配

    ????歡迎光臨,終于等到你啦???? ??我是蘇澤,一位對技術(shù)充滿熱情的探索者和分享者。???? ??持續(xù)更新的專欄 《Spring 狂野之旅:從入門到入魔》 ?? 本專欄帶你從Spring入門到入魔 ? 這是蘇澤的個人主頁可以看到我其他的內(nèi)容哦???? 努力的蘇澤 http://suzee.blog.csdn

    2024年03月23日
    瀏覽(25)
  • 為什么需要數(shù)據(jù)倉庫

    為什么不在OLTP環(huán)境下分析?? OLTP環(huán)境也會存儲歷史數(shù)據(jù),但這些歷史數(shù)據(jù)并不是業(yè)務(wù)運行所需的,這些歷史數(shù)據(jù)需要經(jīng)常歸檔到數(shù)據(jù)倉庫,并且在OLTP數(shù)據(jù)庫中刪除。 相比之下,事務(wù)環(huán)境適用于連續(xù)處理事務(wù),通常應(yīng)用于訂單錄入以及財務(wù)和零售事務(wù)。它們并不依賴歷史數(shù)據(jù)

    2024年01月25日
    瀏覽(32)
  • 為什么需要單元測試?

    為什么需要單元測試?

    為什么需要單元測試? 從產(chǎn)品角度而言,常規(guī)的功能測試、系統(tǒng)測試都是站在產(chǎn)品局部或全局功能進行測試,能夠很好地與用戶的需要相結(jié)合,但是缺乏了對產(chǎn)品研發(fā)細節(jié)(特別是代碼細節(jié)的理解)。 從測試人員角度而言,功能測試和系統(tǒng)測試以及其他性能測試等等對測試

    2024年02月12日
    瀏覽(34)
  • 為什么需要uboot?

    bootROM: 一種固化在芯片內(nèi)部的只讀存儲器(ROM),用于啟動和初始化系統(tǒng)。BootROM 中通常包含了一些預(yù)先編寫好的代碼,用于完成系統(tǒng)啟動前的基本初始化和配置, 例如初始化時鐘、GPIO控制器、中斷控制器、存儲設(shè)備(SD卡、NAND Flash、SPicy Flash)等硬件資源, 檢測啟動設(shè)備

    2023年04月23日
    瀏覽(21)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包