最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

SprintBoot深入淺出講解場景啟動器Starter

 更新時間:2022年06月06日 14:23:45   作者:孟華328  
本篇文章將和大家分享一下 Spring Boot 框架中的 Starters 場景啟動器的內(nèi)容,關于 Starters 具體是用來做什么的,以及在開發(fā) Spring Boot項目前,要如何自定義一個 Starters 場景啟動器

1 場景啟動器 starter 簡介

什么是 SpringMVC

在早期 Java Web 的開發(fā)中,統(tǒng)一把顯示層、控制層、數(shù)據(jù)層的操作全部交給 JSP 或者 JavaBean 來進行處理,這樣的弊端有:

  • JSP 和 Java Bean 之間嚴重耦合,Java 代碼和 HTML 代碼也耦合在了一起
  • 要求開發(fā)者不僅要掌握 Java ,還要有高超的前端水平
  • 前端和后端相互依賴,前端需要等待后端完成,后端也依賴前端完成,才能進行有效的測試代碼難以復用

為了解決這些弊端,MVC 模式便應運誕生了。

M 代表 模型(Model)

模型是什么呢? 模型就是數(shù)據(jù),就是 dao,bean

V 代表 視圖(View)

視圖是什么呢? 就是網(wǎng)頁, JSP,用來展示模型中的數(shù)據(jù)

C 代表 控制器(controller)

控制器是什么? 控制器的作用就是把不同的數(shù)據(jù)(Model),顯示在不同的視圖(View)上,

Spring MVC 就是 MVC 模式的一種。Spring MVC 是 Spring 提供的一個基于 MVC 設計模式的輕量級 Web 開發(fā)框架,本質(zhì)上相當于 Servlet。

Java Servlet 是運行在 Web 服務器或應用服務器上的程序,它是作為來自 Web 瀏覽器或其他 HTTP 客戶端的請求和HTTP 服務器上的數(shù)據(jù)庫或應用程序之間的中間層

Spring MVC 角色劃分清晰,分工明細。由于 Spring MVC 本身就是 Spring 框架的一部分,可以說和 Spring 框架是無縫集成。性能方面具有先天的優(yōu)越性,是當今業(yè)界最主流的 Web 開發(fā)框架,最熱門的開發(fā)技能。

什么是 SpringBoot 場景啟動器 starter

在了解完Spring MVC 的相關知識后,我們切入正題。SpringBoot 之所以引入場景啟動 starter,必定有其原因。使用過Spring 的朋友都知道,大量的特性配置,常常讓開發(fā)人員頭疼萬分。歸納起來有以下兩點:

依賴導入問題

每個項目都需要來單獨維護自己所依賴的jar包,在項目中使用到什么功能就需要引入什么樣的依賴。手動導入依賴容易出錯,且無法統(tǒng)一集中管理

配置繁瑣

在引入依賴之后需要做繁雜的配置,并且這些配置是每個項目來說都是必要的,例如web.xml配置(Listener配置、Filter配置、Servlet配置)、log4j配置、數(shù)據(jù)庫連接池配置等等。這些配置重復且繁雜,在不同的項目中需要進行多次重復開發(fā),這在很大程度上降低了我們的開發(fā)效率。

SpringBoot 的啟動器就是解決上述兩個問題的。

2 SpringBoot 場景啟動器的原理

在導入的starter之后,SpringBoot主要幫我們完成了兩件事情:

  • 相關組件的自動導入
  • 相關組件的自動配置

自動配置原理

自動配置類的獲取與注入

我們從主程序入口來探索一下整個過程的原理:

@SpringBootApplication 
public class LearnApplication {
    public static void main(String[] args) {
       SpringApplication.run(LearnApplication.class, args);
    }
}

@SpringBootApplication 相當于

可以看到,自動配置的關鍵是@EnableAutoConfiguration 注解。

@EnableAutoConfiguration 注解

激活自動配置注解包含了兩個部分:

  • @AutoConfigurationPackage
  • @Import(AutoConfigurationImportSelector.class)

首先,講一下 @AutoConfigurationPackage。看一下該注解的定義:

@AutoConfigurationPackage 包含了 @Import(AutoConfigurationPackages.Registrar.class)。這是一個 Spring底層注解。向容器中注入一個Registrar,該Registrar會將@SpringBootApplication主配置類所在包下的所有類都掃描進Spring容器中。

再看一下@EnableAutoConfiguration 的 @Import(AutoConfigurationImportSelector.class) 。這也是一個Spring底層注解。向容器中注入一個Selector,該Selector可以將要注入的一系列bean的全限定類名返回,并按照名稱將這些bean全部注入到容器中。

Spring Factories 文件

Spring Factories 是 SpringBoot 的擴展機制之一,是基于 java SPI 。所謂SPI機制就是,為某個接口尋找服務實現(xiàn)的機制。有點類似IOC的思想,就是將裝配的控制權移到程序之外,在模塊化設計中這個機制尤其重要。

在 Spring 中也有一種類似與 Java SPI 的加載機制。它在 resources/META-INF/spring.factories 文件中配置接口的實現(xiàn)類名稱,然后在程序中讀取這些配置文件并實例化。

我們可以在spring-boot-autoconfigure包里,看一下spring.factories 文件。

在這里,我們可以看到SpringBoot官方為我們提供的所有自動配置類的候選列表。

3 總結

  • SpringBoot在啟動的時候從類路徑下的META-INF/spring.factories中獲取EnableAutoConfiguration指定的所有自動配置類的全限定類名。
  • 將這些自動配置類導入容器,自動配置類就生效,幫我們進行自動配置工作。
  • 整個J2EE的整體解決方案和自動配置都在spring-boot-autoconfigure的jar包中。
  • 它會給容器中導入非常多的自動配置類 (xxxAutoConfiguration), 就是給容器中導入這個場景需要的所有組件,并配置好這些組件。
  • 有了自動配置類,免去了我們手動編寫配置注入功能組件等的工作。

到此這篇關于SprintBoot深入淺出講解場景啟動器Starter的文章就介紹到這了,更多相關SprintBoo場景啟動器內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:

相關文章

  • Java設計模式之裝飾器模式

    Java設計模式之裝飾器模式

    這篇文章介紹了Java設計模式之裝飾器模式,文中通過示例代碼介紹的非常詳細。對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-09-09
  • java實現(xiàn)一致性hash算法實例代碼

    java實現(xiàn)一致性hash算法實例代碼

    這篇文章主要給大家介紹了關于java實現(xiàn)一致性hash算法的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-12-12
  • 淺談SpringBoot如何封裝統(tǒng)一響應體

    淺談SpringBoot如何封裝統(tǒng)一響應體

    今天帶各位小伙伴學習SpringBoot如何封裝統(tǒng)一響應體,文中有非常詳細的介紹及代碼示例,對正在學習java的小伙伴們有非常好的幫助,需要的朋友可以參考下
    2021-05-05
  • Java8中使用一行代碼讀取文件

    Java8中使用一行代碼讀取文件

    這篇文章主要介紹了Java8中使用一行代碼讀取文件,要注意,本文介紹的方法不適合讀取很大的文件,因為可能存在內(nèi)存空間不足的問題,需要的朋友可以參考下
    2015-03-03
  • java實現(xiàn)學生管理系統(tǒng)(面向?qū)ο?

    java實現(xiàn)學生管理系統(tǒng)(面向?qū)ο?

    這篇文章主要為大家詳細介紹了java實現(xiàn)學生管理系統(tǒng)(面向?qū)ο螅闹惺纠a介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-03-03
  • MyBatis中PageHelper不生效的解決方案

    MyBatis中PageHelper不生效的解決方案

    這篇文章主要介紹了MyBatis中PageHelper不生效的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-06-06
  • 詳解Java中字符串緩沖區(qū)StringBuffer類的使用

    詳解Java中字符串緩沖區(qū)StringBuffer類的使用

    StringBuffer與String類似,只不過StringBuffer在進行字符串處理時不生成新的對象,下面我們就來詳解Java中字符串緩沖區(qū)StringBuffer類的使用:
    2016-06-06
  • Java中工具Jstack的使用實例

    Java中工具Jstack的使用實例

    jstack用于生成java虛擬機當前時刻的線程快照,下面這篇文章主要給大家介紹了關于Java中工具Jstack使用的相關資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2022-04-04
  • Java中實現(xiàn)Map按值排序的多種方法

    Java中實現(xiàn)Map按值排序的多種方法

    Java的Map接口默認不保證元素的順序,本文介紹如何使用TreeMap、Collections.sort()結合Entry、Stream API以及Guava庫等技術手段實現(xiàn)Map按值排序,每種方法都有其特點,在選擇具體方法時應考慮項目的具體需求及個人偏好,需要的朋友可以參考下
    2025-03-03
  • Spring Native項目實戰(zhàn)(體驗79毫秒啟動springboot應用)

    Spring Native項目實戰(zhàn)(體驗79毫秒啟動springboot應用)

    Spring Native是Spring提供的、制作native image的技術方案,本篇主要內(nèi)容是開發(fā)springboot應用再構建為native image的方法,通過Spring Native項目實戰(zhàn)讓大家體驗79毫秒啟動springboot應用,感興趣的朋友跟隨小編一起看看吧
    2021-05-05

最新評論

三明市| 民权县| 宾阳县| 杂多县| 津南区| 宜阳县| 武胜县| 榆社县| 七台河市| 枣强县| 枞阳县| 青河县| 武强县| 四子王旗| 岑巩县| 普兰县| 清镇市| 海口市| 神木县| 大城县| 深泽县| 建昌县| 晋城| 林甸县| 高平市| 师宗县| 洛南县| 蓝山县| 霍林郭勒市| 成都市| 云浮市| 调兵山市| 正蓝旗| 通城县| 沁源县| 海原县| 柘城县| 肇源县| 高要市| 松桃| 招远市|