springboot中的starter使用解析
springboot中的starter
平時spring boot項目使用mybatis的可能很大概念都會見到引入依賴
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>xx.xx.xx</version>
</dependency>
或者有時我們也會引入一些自己項目基礎組件的starter依賴,有時不明白原理的可以就比較迷茫,主要是引入了starter依賴之后,基礎組件就可以像在spring的bean一樣在項目中使用,那其實只要找到在哪里加載了這些bean就明白了。
因為mybatis-spring-boot-starter里還依賴了一些跟mybatis相關的依賴,如下:
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-autoconfigure</artifactId>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
</dependency>
</dependencies>
仔細看有依賴包mybatis-spring-boot-autoconfigure,這里就是真正加載bean的,

包里有文件META-INF/spring.factories,內容:
# Auto Configure org.springframework.boot.autoconfigure.EnableAutoConfiguration=\ org.mybatis.spring.boot.autoconfigure.MybatisLanguageDriverAutoConfiguration,\ org.mybatis.spring.boot.autoconfigure.MybatisAutoConfiguration
繼續(xù)看看兩個類
@org.springframework.context.annotation.Configuration
@ConditionalOnClass({ SqlSessionFactory.class, SqlSessionFactoryBean.class })
@ConditionalOnSingleCandidate(DataSource.class)
@EnableConfigurationProperties(MybatisProperties.class)
@AutoConfigureAfter({ DataSourceAutoConfiguration.class, MybatisLanguageDriverAutoConfiguration.class })
public class MybatisAutoConfiguration implements InitializingBean {
//...
}
@Configuration
@ConditionalOnClass(LanguageDriver.class)
public class MybatisLanguageDriverAutoConfiguration {
//...
}
這里已經比較明朗了,平時我們使用spring boot定義bean時都會寫@Configuration修飾的類里去注冊bean到spring容器里的,所以starter主要就是在META-INF/spring.factories文件指定好bean注冊類,讓spring容器啟動時去掃描注冊bean就可以了。 但是我們在項目里@Configuration注冊的bean可以,而依賴包里的就要額外加上META-INF/spring.factories來指定注冊類,因為spring默認只會掃描當前項目里的@Configuration類,所以需要加上META-INF/spring.factories來指定注冊類,這樣spring可以額外掃描依賴包里的注冊bean,其實就是使用了類似SPI機制,可以讓使用者可以自行擴展實現(xiàn)類。
到此這篇關于springboot中的starter使用解析的文章就介紹到這了,更多相關springboot中的starter內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
CompletableFuture創(chuàng)建及功能使用全面詳解
這篇文章主要為大家介紹了CompletableFuture創(chuàng)建及功能使用全面詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-07-07
使用IDEA搭建Hadoop開發(fā)環(huán)境的操作步驟(Window10為例)
經過三次重裝,查閱無數(shù)資料后成功完成hadoop在win10上實現(xiàn)偽分布式集群,以及IDEA開發(fā)環(huán)境的搭建。一步一步跟著本文操作可以避免無數(shù)天坑2021-07-07
利用SpringBoot實現(xiàn)高效的文件分塊上傳方案
在互聯(lián)網應用中,大文件上傳是一個常見而棘手的挑戰(zhàn),傳統(tǒng)的單文件上傳方式在面對大文件時經常面臨超時、內存溢出等問題,本文將深入探討如何利用Spring Boot實現(xiàn)高效的分塊上傳方案,解決大文件傳輸痛點,需要的朋友可以參考下2025-06-06
利用openoffice+jodconverter-code-3.0-bate4實現(xiàn)ppt轉圖片
這篇文章主要為大家詳細介紹了利用openoffice+jodconverter-code-3.0-bate4實現(xiàn)ppt轉圖片,具有一定的參考價值,感興趣的小伙伴們可以參考一下2019-07-07
springcloud?如何解決微服務之間token傳遞問題
這篇文章主要介紹了springcloud?如何解決微服務之間token傳遞問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-03-03

