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

關(guān)于SpringBoot3.x中spring.factories功能被移除的解決方案

 更新時間:2022年12月05日 08:19:03   作者:Throwable  
這篇文章主要介紹了SpringBoot3.x中spring.factories功能被移除的解決方案,在配置好相關(guān)依賴、最小啟動類和配置之后,發(fā)現(xiàn)項(xiàng)目無法啟動,于是根據(jù)啟動上下文日志和按行DEBUG找到原因并且在等待組件升級兼容之前進(jìn)行臨時性解決,需要的朋友可以參考下

背景

筆者所在項(xiàng)目組在搭建一個全新項(xiàng)目的時候選用了SpringBoot3.x,項(xiàng)目中應(yīng)用了很多SpringBoot2.x時代相關(guān)的第三方組件例如baomidou出品的mybatis-plus、dynamic-datasource等。在配置好相關(guān)依賴、最小啟動類和配置之后,發(fā)現(xiàn)項(xiàng)目無法啟動。于是根據(jù)啟動上下文日志和按行DEBUG找到原因并且在等待組件升級兼容之前進(jìn)行臨時性解決。

關(guān)于spring.factories

spring.factories其實(shí)是SpringBoot提供的SPI機(jī)制,底層實(shí)現(xiàn)是基于SpringFactoriesLoader檢索ClassLoader中所有jar(包括ClassPath下的所有模塊)引入的META-INF/spring.factories文件,基于文件中的接口(或者注解)加載對應(yīng)的實(shí)現(xiàn)類并且注冊到IOC容器。這種方式對于@ComponentScan不能掃描到的并且想自動注冊到IOC容器的使用場景十分合適,基本上絕大多數(shù)第三方組件甚至部分spring-projects中編寫的組件都是使用這種方案。

spring.factories文件的格式大致如下:

# Initializers
org.springframework.context.ApplicationContextInitializer=\
org.springframework.boot.autoconfigure.SharedMetadataReaderFactoryContextInitializer,\
org.springframework.boot.autoconfigure.logging.ConditionEvaluationReportLoggingListener

# Application Listeners
org.springframework.context.ApplicationListener=\
org.springframework.boot.autoconfigure.BackgroundPreinitializer

# Environment Post Processors
org.springframework.boot.env.EnvironmentPostProcessor=\
org.springframework.boot.autoconfigure.integration.IntegrationPropertiesEnvironmentPostProcessor

# Auto Configuration Import Listeners
org.springframework.boot.autoconfigure.AutoConfigurationImportListener=\
org.springframework.boot.autoconfigure.condition.ConditionEvaluationReportAutoConfigurationImportListener

# Auto Configuration Import Filters
org.springframework.boot.autoconfigure.AutoConfigurationImportFilter=\
org.springframework.boot.autoconfigure.condition.OnBeanCondition,\
org.springframework.boot.autoconfigure.condition.OnClassCondition,\
org.springframework.boot.autoconfigure.condition.OnWebApplicationCondition

org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
com.baomidou.mybatisplus.autoconfigure.MybatisPlusLanguageDriverAutoConfiguration,\
com.baomidou.mybatisplus.autoconfigure.MybatisPlusAutoConfiguration

通用格式是:接口(或者注解)全類名=\接口實(shí)現(xiàn)類(或者使用了該注解的類)全類名-1,\接口實(shí)現(xiàn)類(或者使用了該注解的類)全類名-2,\...接口實(shí)現(xiàn)類(或者使用了該注解的類)全類名-n。spring.factories中最常用的注解是org.springframework.boot.autoconfigure.EnableAutoConfiguration,通過配置此注解對應(yīng)的實(shí)現(xiàn)了,底層會由AutoConfigurationImportSelector對響應(yīng)的目標(biāo)類進(jìn)行加載和自動注冊。通過閱讀Spring Boot 3.0 Migration Guide得知,spring.factories功能在Spring Boot 2.7已經(jīng)廢棄,并且會在Spring Boot 3.0移除。

spring.factories被移除后的替代方案

Spring Boot 2.x升級到Spring Boot 3.0其實(shí)是一個"破壞性"升級,目前來看相對較大的影響是:

  • 必須使用JDK17
  • Jakarta EE的引入,導(dǎo)致很多舊的類包名稱改變
  • 部分類被徹底移除
  • spring-data模塊的所有配置屬性必須使用spring.data前綴,例如spring.redis.host必須更變?yōu)?code>spring.data.redis.host
  • spring.factories功能在Spring Boot 2.7已經(jīng)廢棄,在Spring Boot 3.0徹底移除(見下圖)

替代方案比較簡單,就是在類路徑下創(chuàng)建META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports文件,文件的內(nèi)容是:每個實(shí)現(xiàn)類的全類名單獨(dú)一行。例如對于使用了(低版本還沒適配Spring Boot 3.0mybatis-plus、dynamic-datasource組件的場景,可以在項(xiàng)目某個模塊的resources目錄下建立META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports文件,輸入以下內(nèi)容:

com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceAutoConfiguration
com.baomidou.mybatisplus.autoconfigure.MybatisPlusLanguageDriverAutoConfiguration
com.baomidou.mybatisplus.autoconfigure.MybatisPlusAutoConfiguration

對于某些社區(qū)熱度比較高的組件近期可以密切關(guān)注其基于Spring Boot 3.0適配的版本發(fā)布,例如mybatis-springdubbo等:

這里還沒詳細(xì)分析META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports的源碼實(shí)現(xiàn),從描述和文件名來看,大致看出它在使用上跟原來的spring.factories文件中編寫org.springframework.boot.autoconfigure.EnableAutoConfiguration是相同的

小結(jié)

Spring Boot 3.0的升級門檻比較高。目前來看spring.factories功能的移除個人認(rèn)為是本次版本升級的最大影響因素,有可能導(dǎo)致大部分第三方編寫過自動注冊板塊的組件全部失效。當(dāng)然,JDK17也是一個比較高的門檻,對于大部分有歷史包袱的項(xiàng)目如果決定升級需要極大的容器。建議先觀望和關(guān)注團(tuán)隊用到的技術(shù)?;蛘呖蚣芏歼m配Spring Boot 3.0后再進(jìn)行版本升級。

到此這篇關(guān)于SpringBoot3.x中spring.factories功能被移除的解決方案的文章就介紹到這了,更多相關(guān)SpringBoot3.x中spring.factories功能移除內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java-JFrame窗體美化方式

    Java-JFrame窗體美化方式

    這篇文章主要介紹了Java-JFrame窗體美化方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-11-11
  • Mybatis-Plus 自動填充失效問題解決

    Mybatis-Plus 自動填充失效問題解決

    在使用MyBatis-Plus時,自動填充功能可能會失效,這通常與版本和配置有關(guān),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-10-10
  • MyBatisPlus中事務(wù)處理的實(shí)現(xiàn)

    MyBatisPlus中事務(wù)處理的實(shí)現(xiàn)

    本文主要介紹了MyBatisPlus中事務(wù)處理的實(shí)現(xiàn),包括事務(wù)的開啟、提交、回滾等操作,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-07-07
  • Spring Boot 2.0快速構(gòu)建服務(wù)組件全步驟

    Spring Boot 2.0快速構(gòu)建服務(wù)組件全步驟

    這篇文章主要給大家介紹了關(guān)于Spring Boot 2.0快速構(gòu)建服務(wù)組件的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用Spring Boot 2.0具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-04-04
  • SpringBoot 攔截器妙用你真的了解嗎

    SpringBoot 攔截器妙用你真的了解嗎

    關(guān)于springboot攔截器很多朋友掌握的不是多好,今天抽空給大家普及下這方面的知識,SpringBoot 攔截器妙用,讓你一個人開發(fā)整個系統(tǒng)的鑒權(quán)模塊,快來跟小編一起學(xué)習(xí)下吧
    2021-07-07
  • springboot整合shiro與自定義過濾器的全過程

    springboot整合shiro與自定義過濾器的全過程

    這篇文章主要給大家介紹了關(guān)于springboot整合shiro與自定義過濾器以及Shiro中權(quán)限控制的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-01-01
  • Maven使用pom.xml引入自定義jar包方式

    Maven使用pom.xml引入自定義jar包方式

    這篇文章主要介紹了Maven使用pom.xml引入自定義jar包方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-08-08
  • JavaFx 實(shí)現(xiàn)按鈕防抖功能

    JavaFx 實(shí)現(xiàn)按鈕防抖功能

    最近Sun公司推出了JavaFX框架,使用它可以利用JavaFX編程語言來開發(fā)富互聯(lián)網(wǎng)應(yīng)用程序(RIA),這篇文章主要介紹了JavaFx 實(shí)現(xiàn)按鈕防抖功能,需要的朋友可以參考下
    2022-01-01
  • 基于hibernate實(shí)現(xiàn)的分頁技術(shù)實(shí)例分析

    基于hibernate實(shí)現(xiàn)的分頁技術(shù)實(shí)例分析

    這篇文章主要介紹了基于hibernate實(shí)現(xiàn)的分頁技術(shù),結(jié)合實(shí)例形式分析了Hibernate分頁技術(shù)的原理,實(shí)現(xiàn)步驟與相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下
    2016-03-03
  • Java中public關(guān)鍵字用法詳細(xì)講解

    Java中public關(guān)鍵字用法詳細(xì)講解

    這篇文章主要給大家介紹了關(guān)于Java中public關(guān)鍵字用法的相關(guān)資料,public關(guān)鍵字是和訪問權(quán)限相關(guān)的,它所修飾的方法對所有類都是可以訪問的,需要的朋友可以參考下
    2023-09-09

最新評論

滨海县| 千阳县| 扎赉特旗| 深圳市| 南阳市| 昌黎县| 专栏| 南川市| 图片| 淳化县| 晋宁县| 枣庄市| 宁明县| 鹿邑县| 红桥区| 合作市| 方城县| 平顶山市| 临漳县| 东方市| 江城| 兴宁市| 龙门县| 连山| 桃江县| 靖州| 岳阳县| 特克斯县| 平和县| 湟源县| 灵丘县| 新邵县| 洞口县| 呈贡县| 皋兰县| 农安县| 龙海市| 金乡县| 太谷县| 左权县| 房产|