亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Spring-boot原理及spring-boot-starter的示例分析

發布時間:2021-08-23 09:55:08 來源:億速云 閱讀:215 作者:小新 欄目:編程語言

這篇文章主要為大家展示了“Spring-boot原理及spring-boot-starter的示例分析”,內容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領大家一起研究并學習一下“Spring-boot原理及spring-boot-starter的示例分析”這篇文章吧。

Spring-boot自出現后,到現在火的很,大家貌似都在用,連招聘里面也要求會這個。但是說實話,spring-boot無外乎想實現一種可插拔的編程方式,說是簡化配置,其實并沒有減少多少,只不過把配置落到代碼里面,通過各種annotation來標示了。

作為個人其實不太愿意團隊用spring-boot這種層層封裝的方式,各種jar鋪天蓋地,最終大家都被綁架了,自己底層的能力不一定有什么提高。

spring-boot的starter又是個什么鬼?

一句話,spring-boot的starter是一個通過maven完成自包含并通過annotation配置使得可被spring上下文發現并實例化的一個可插拔的組件或服務。

spring-boot有兩種starter

一種是內部已經支持的,一種是第三方的。

內部支持starter:

其通過@ConditionalOnClass來實決定是否例化(ConditionalOnClass是指當在classpath發現需要的依賴的類時實例化),想要啟動這個服務,只要要配置上對應的starter,這個starter就能把所需要的jar給關聯上。

類似于我們對log的使用,默認使用slf4j這個api接口,提供一個鉤子,classpath里面誰實現了這個機構,誰就掛到這個鉤子上成為log具體實現,其中log4j就是一個實現。

通過spring的如下maven配置即可看見里面已經通過dependencyManagement(這個時maven的依賴管理,不用的時候不會加載)給你配置好了所有內置starter。只需要用的時候把對應的starter依賴配置上就行了。

<dependency>
jpg <groupId>org.springframework.boot</groupId>
jpg <artifactId>spring-boot-starter</artifactId> <
jpg/dependency>

所有的starter其實都是要通過代碼配置被上下文發現的,可以在spring-boot-autoconfigure-xxx.jar去看,如下:。

Spring-boot原理及spring-boot-starter的示例分析

內置的tomcat,jetty也在里面:

Spring-boot原理及spring-boot-starter的示例分析

具體代碼:

通過ConditionalOnClass只要發現了tomcat這個類(配置了spring-boot-starter-web的maven依賴后就會會有),就會啟動tomcat的服務。

Spring-boot原理及spring-boot-starter的示例分析

第三方starter:

比如mybatis等。

原理是一樣的,就是在你已經實現的服務代碼之上封裝一層配置代碼就行,看看mybitis的,這是mybatis-spring-boot-starter的依賴。

<dependency>
jpg<groupId>org.mybatis.spring.boot</groupId>
jpg<artifactId>mybatis-spring-boot-starter</artifactId>
jpg<version>1.3.0</version>
jpg</dependency>

這個依賴是一個pom,點進去可以看見自包含的依賴關系,其中一個就是mybatis的autoConfigure,通過@bean等annotation完成對mybatis的實例化配置,如下:

Spring-boot原理及spring-boot-starter的示例分析

具體代碼:

Spring-boot原理及spring-boot-starter的示例分析

基于這個機制,我們自己也可以實現一個

本次實現一個簡單的數據庫操作組件,類似于mybatis,只不過只實現了簡單的查詢服務。

整個示例有兩個工程:

一個實現我們自己的starter(取名叫spring-boot-mydao-starter),最后會打成ar包,并install到本地maven本地廠庫里。

另外一個工程用于測試,最終會依賴spring-boot-mydao-starter整個組件,并調用里面的查詢服務去測試。

Spring-boot原理及spring-boot-starter的示例分析

工程

具體類如下:

1、創建spring-boot-mydao-starter工程,添加相關依賴配置

我們實現的這個組件僅僅依賴于mysql的驅動以及spring-boot的上下文環境。其中mysql驅動用的spring-boot-starter-parent里面配置好的,這里直接用即可,maven配置如下:

Spring-boot原理及spring-boot-starter的示例分析

2、實現以下幾個類:

Mydao:封裝數據庫的連接和查詢服務,和spring沒有任何關系。

MyDaoAutoConfiguration:提供MyDao的配置用于啟動時被spring上下文發現并解析。

DbProperties:完成對數據庫配置參數文件的讀取(db.properties,當然spring-boot也支持其他格式的配置文件,個人還是喜歡傳統樣式)。

其中Mydao:

Spring-boot原理及spring-boot-starter的示例分析

MyDaoAutoConfiguration(將配置參數對象傳給Mydao并配置Mydao實例):

Spring在啟動時會通過@Bean實例化Mydao并將其放入ConfigurableApplicationContext容器中。

Spring-boot原理及spring-boot-starter的示例分析

配置文件類DbProperties:

自動讀取classpath下的db.properties的配置文件,并實例化成類對象。配置文件需要在測試的工程(test-spring-boot-mydao-starter)里提供。

Spring-boot原理及spring-boot-starter的示例分析

配置文件db.properties

Spring-boot原理及spring-boot-starter的示例分析

以上就是真個starter的類容。下面描述如何使用這個starter。

新建測試工程test-spring-boot-mydao-starter(起啥名都行)。配置上對我們的starter的依賴:

因為starter里面已經依賴了spring-boot的上下文,所以這里就不用配置了。

Spring-boot原理及spring-boot-starter的示例分析

然后就是測試:

我們用mysql自帶的數據庫里面的user表做測試。以下是測試類,需要注入starter里面的mydao:

Spring-boot原理及spring-boot-starter的示例分析

然后就是啟動測試:

Spring-boot原理及spring-boot-starter的示例分析

也可以用spring的junit來測試。

以上是“Spring-boot原理及spring-boot-starter的示例分析”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

拉孜县| 阿图什市| 惠东县| 缙云县| 巴塘县| 黄骅市| 太康县| 南江县| 炉霍县| 定安县| 景宁| 八宿县| 沈丘县| 东乌珠穆沁旗| 佛教| 厦门市| 曲麻莱县| 康乐县| 化德县| 武宁县| 安宁市| 新巴尔虎右旗| 综艺| 平原县| 双桥区| 南岸区| 长葛市| 清丰县| 如东县| 吴桥县| 洛隆县| 谷城县| 牙克石市| 凌源市| 堆龙德庆县| 克拉玛依市| 昌平区| 拉萨市| 即墨市| 邯郸市| 湘潭市|