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

關(guān)于SpringBoot的spring.factories文件詳細(xì)說明

 更新時間:2024年12月29日 08:50:39   作者:程序猿進階  
spring.factories 文件是 Spring Boot 自動配置機制的核心部分之一,它位于每個 Spring Boot 自動配置模塊的 META-INF 目錄下,經(jīng)常看到 spring.factories 文件,卻沒有對它進行深入的了解和分析,今天我們就一起揭開面紗看看它的內(nèi)在,需要的朋友可以參考下

前言

經(jīng)??吹?spring.factories 文件,卻沒有對它進行深入的了解和分析,今天我們就一起揭開面紗看看它的內(nèi)在。

spring.factories 文件是 Spring Boot 自動配置機制的核心部分之一。它位于每個 Spring Boot 自動配置模塊的 META-INF 目錄下,用于聲明該模塊提供的自動配置類、條件性配置類、環(huán)境后處理器等。以下是對 spring.factories 文件的詳細(xì)說明:

相信大家的項目中都會寫starter,我們團隊寫的國際化通用和通用聚合服務(wù)等即插即用的功能包,就是用的starter。那么就會自己聲明spring.factories文件。

這是一種工廠加載機制(factory loading mechanism),也可說成是SPI機制。原理分析在Spring SPI與Java SPI、Dubbo SPI

Spring Boot jar包下的spring.factories文件也聲明了一些組件,為方便我的闡述,我把它列在了附錄中。我會按照 介紹作用、初始化時機 去做分析。

一、基本結(jié)構(gòu)

spring.factories 文件是一個鍵值對的屬性文件,鍵和值之間用等號(=)分隔,多個值之間用逗號(,)分隔。文件內(nèi)容通常如下所示:

org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
com.example.MyAutoConfiguration,\
com.example.AnotherAutoConfiguration

org.springframework.boot.autoconfigure.condition.ConditionalOnClass=\
com.example.SomeClass

org.springframework.context.ApplicationListener=\
com.example.MyApplicationListener

二、常見的鍵

EnableAutoConfiguration

EnableAutoConfiguration 是最常見的鍵,用于聲明自動配置類。Spring Boot 會在啟動時掃描這些類,并根據(jù)條件加載相應(yīng)的配置。

org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
com.example.MyAutoConfiguration,\
com.example.AnotherAutoConfiguration

AutoConfigurationImportListener

AutoConfigurationImportListener 用于聲明 AutoConfigurationImportListener 接口的實現(xiàn)類,這些類可以在自動配置類導(dǎo)入之前或之后執(zhí)行一些邏輯。

org.springframework.boot.autoconfigure.AutoConfigurationImportListener=\
com.example.MyAutoConfigurationImportListener

AutoConfigurationImportFilter

AutoConfigurationImportFilter 用于聲明 AutoConfigurationImportFilter 接口的實現(xiàn)類,這些類可以在自動配置類導(dǎo)入之前過濾掉一些不需要的配置類。

org.springframework.boot.autoconfigure.AutoConfigurationImportFilter=\
com.example.MyAutoConfigurationImportFilter

org.springframework.boot.env.PropertySourceLoader

策略接口,用于加載PropertySource(配置)。實現(xiàn)有PropertiesPropertySourceLoader、YamlPropertySourceLoader。

初始化時機: 當(dāng)ConfigFileApplicationListener收到ApplicationEnvironmentPreparedEvent事件時, 創(chuàng)建SourceLoader并執(zhí)行l(wèi)oad,加載配置。

org.springframework.boot.SpringApplicationRunListener

用于監(jiān)聽spring boot啟動并作出相應(yīng)處理。

Listener for the SpringApplication run method。

初始化時機: 在SpringApplication啟動時進行初始化。

org.springframework.boot.SpringBootExceptionReporter

回調(diào)接口,用于對Spring Boot應(yīng)用啟動失?。òl(fā)生異常)后,進行異常播報的組件。

初始化時機: 在SpringApplication啟動時(創(chuàng)建完Application context后)進行初始化。

org.springframework.context.ApplicationContextInitializer

用于在刷新之前初始化Spring ConfigurableApplicationContext的回調(diào)接口。比如,servlet web容器會用該組件設(shè)置一些額外的屬性。

初始化時機: Spring Application構(gòu)造時創(chuàng)建。

org.springframework.context.ApplicationListener

用于監(jiān)聽事件并作處理。

初始化時機: Spring Application構(gòu)造時創(chuàng)建。

org.springframework.boot.env.EnvironmentPostProcessor

在context刷新前可對environment進行修改的組件。

初始化時機: 在run listener發(fā)出ApplicationEnvironmentPreparedEvent事件后觸發(fā)。

org.springframework.boot.diagnostics.FailureAnalyzer

分析錯誤,展示給用戶診斷結(jié)果。

初始化時機: 在SpringApplication啟動時(創(chuàng)建完Application context后)進行初始化。 伴隨一個SpringBootExceptionReporter(即org.springframework.boot.diagnostics.FailureAnalyzers) 的實例化而實例化。

org.springframework.boot.diagnostics.FailureAnalysisReporter

在錯誤分析完成后,向用戶展示結(jié)果。(Spring Boot默認(rèn)實現(xiàn)是通過日志展示出來)

初始化時機: 在SpringApplication啟動時(創(chuàng)建完Application context后)發(fā)生錯誤的情況下進行初始化。

spring boot包的spring.factories文件

# PropertySource Loaders
org.springframework.boot.env.PropertySourceLoader=\
org.springframework.boot.env.PropertiesPropertySourceLoader,\
org.springframework.boot.env.YamlPropertySourceLoader

# Run Listeners
org.springframework.boot.SpringApplicationRunListener=\
org.springframework.boot.context.event.EventPublishingRunListener

# Error Reporters
org.springframework.boot.SpringBootExceptionReporter=\
org.springframework.boot.diagnostics.FailureAnalyzers

# Application Context Initializers
org.springframework.context.ApplicationContextInitializer=\
org.springframework.boot.context.ConfigurationWarningsApplicationContextInitializer,\
org.springframework.boot.context.ContextIdApplicationContextInitializer,\
org.springframework.boot.context.config.DelegatingApplicationContextInitializer,\
org.springframework.boot.web.context.ServerPortInfoApplicationContextInitializer

# Application Listeners
org.springframework.context.ApplicationListener=\
org.springframework.boot.ClearCachesApplicationListener,\
org.springframework.boot.builder.ParentContextCloserApplicationListener,\
org.springframework.boot.context.FileEncodingApplicationListener,\
org.springframework.boot.context.config.AnsiOutputApplicationListener,\
org.springframework.boot.context.config.ConfigFileApplicationListener,\
org.springframework.boot.context.config.DelegatingApplicationListener,\
org.springframework.boot.context.logging.ClasspathLoggingApplicationListener,\
org.springframework.boot.context.logging.LoggingApplicationListener,\
org.springframework.boot.liquibase.LiquibaseServiceLocatorApplicationListener

# Environment Post Processors
org.springframework.boot.env.EnvironmentPostProcessor=\
org.springframework.boot.cloud.CloudFoundryVcapEnvironmentPostProcessor,\
org.springframework.boot.env.SpringApplicationJsonEnvironmentPostProcessor,\
org.springframework.boot.env.SystemEnvironmentPropertySourceEnvironmentPostProcessor

# Failure Analyzers
org.springframework.boot.diagnostics.FailureAnalyzer=\
org.springframework.boot.diagnostics.analyzer.BeanCurrentlyInCreationFailureAnalyzer,\
org.springframework.boot.diagnostics.analyzer.BeanDefinitionOverrideFailureAnalyzer,\
org.springframework.boot.diagnostics.analyzer.BeanNotOfRequiredTypeFailureAnalyzer,\
org.springframework.boot.diagnostics.analyzer.BindFailureAnalyzer,\
org.springframework.boot.diagnostics.analyzer.BindValidationFailureAnalyzer,\
org.springframework.boot.diagnostics.analyzer.UnboundConfigurationPropertyFailureAnalyzer,\
org.springframework.boot.diagnostics.analyzer.ConnectorStartFailureAnalyzer,\
org.springframework.boot.diagnostics.analyzer.NoSuchMethodFailureAnalyzer,\
org.springframework.boot.diagnostics.analyzer.NoUniqueBeanDefinitionFailureAnalyzer,\
org.springframework.boot.diagnostics.analyzer.PortInUseFailureAnalyzer,\
org.springframework.boot.diagnostics.analyzer.ValidationExceptionFailureAnalyzer,\
org.springframework.boot.diagnostics.analyzer.InvalidConfigurationPropertyNameFailureAnalyzer,\
org.springframework.boot.diagnostics.analyzer.InvalidConfigurationPropertyValueFailureAnalyzer

# FailureAnalysisReporters
org.springframework.boot.diagnostics.FailureAnalysisReporter=\
org.springframework.boot.diagnostics.LoggingFailureAnalysisReporter

三、自動配置類

以下是一個簡單的自動配置類示例:

package com.example.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class MyAutoConfiguration {

    @Bean
    public MyService myService() {
        return new MyService();
    }
}

條件性自動配置

package com.example.config;

import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
@ConditionalOnClass(name = "com.example.SomeClass")
public class MyAutoConfiguration {

    @Bean
    public MyService myService() {
        return new MyService();
    }
}

以上就是關(guān)于SpringBoot的spring.factories文件詳細(xì)說明的詳細(xì)內(nèi)容,更多關(guān)于SpringBoot spring.factories文件的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 解決Maven?build打包,類找不到,找不到引用的那個項目里面的類問題

    解決Maven?build打包,類找不到,找不到引用的那個項目里面的類問題

    文章討論了在使用Maven構(gòu)建項目時遇到類找不到的問題,并給出了解決方法,主要原因是公共項目被打成了可執(zhí)行的jar,導(dǎo)致其他項目無法引用其中的類,解決方法包括在公共項目的pom中將打包類型改為普通jar,以及在主項目中正確引用公共項目
    2026-02-02
  • java雙重檢查鎖定的實現(xiàn)代碼

    java雙重檢查鎖定的實現(xiàn)代碼

    這篇文章主要介紹了java雙重檢查鎖定的實現(xiàn)方法,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下
    2018-06-06
  • SpringBoot中整合JodConverter實現(xiàn)文件在線預(yù)覽功能

    SpringBoot中整合JodConverter實現(xiàn)文件在線預(yù)覽功能

    Spring Boot JodConverter是一個基于Spring Boot框架的文檔轉(zhuǎn)換工具,它使用JodConverter庫來實現(xiàn)文檔格式之間的轉(zhuǎn)換,本文主要介紹了SpringBoot中整合JodConverter實現(xiàn)文件在線預(yù)覽功能,需要的朋友可以參考下
    2024-04-04
  • Spring中@Value設(shè)置默認(rèn)值問題解決

    Spring中@Value設(shè)置默認(rèn)值問題解決

    本文主要介紹了Spring中@Value設(shè)置默認(rèn)值問題解決,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-07-07
  • Java JUC并發(fā)集合詳解之線程安全容器完全攻略

    Java JUC并發(fā)集合詳解之線程安全容器完全攻略

    Java通過java.util.concurrent(JUC)包提供了一整套線程安全的并發(fā)容器,它們不僅是簡單的同步包裝,更是基于精妙并發(fā)算法構(gòu)建的高性能工具,本文給大家介紹Java JUC并發(fā)集合詳解之線程安全容器完全攻略,感興趣的朋友一起看看吧
    2025-09-09
  • Java通過反射訪問注解信息的方法示例

    Java通過反射訪問注解信息的方法示例

    這篇文章主要介紹了Java通過反射訪問注解信息的方法,結(jié)合實例形式分析了java基于反射訪問類成員方法注解信息的相關(guān)操作技巧,需要的朋友可以參考下
    2019-08-08
  • IntelliJ IDEA 使用經(jīng)驗總結(jié)(推薦)

    IntelliJ IDEA 使用經(jīng)驗總結(jié)(推薦)

    這篇文章主要介紹了IntelliJ IDEA 使用經(jīng)驗總結(jié),非常不錯,具有參考價值,需要的朋友可以參考下
    2018-02-02
  • Java實現(xiàn)的求逆矩陣算法示例

    Java實現(xiàn)的求逆矩陣算法示例

    這篇文章主要介紹了Java實現(xiàn)的求逆矩陣算法,涉及java基于數(shù)組的矩陣遍歷與運算相關(guān)操作技巧,需要的朋友可以參考下
    2017-09-09
  • Java并發(fā)編程示例(七):守護線程的創(chuàng)建和運行

    Java并發(fā)編程示例(七):守護線程的創(chuàng)建和運行

    這篇文章主要介紹了Java并發(fā)編程示例(七):守護線程的創(chuàng)建和運行,在本節(jié)示例中,我們將創(chuàng)建兩個線程,一個是普通線程,向隊列中寫入事件,另外一個是守護線程,清除隊列中的事件,需要的朋友可以參考下
    2014-12-12
  • 如何基于SpringBoot部署外部Tomcat過程解析

    如何基于SpringBoot部署外部Tomcat過程解析

    這篇文章主要介紹了SpringBoot以war包形式部署到外部Tomcat過程解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-12-12

最新評論

望城县| 顺昌县| 曲松县| 九台市| 张家口市| 达日县| 青冈县| 水富县| 威远县| 灵丘县| 罗城| 淳安县| 民和| 通江县| 辽源市| 陆良县| 陕西省| 天津市| 嵩明县| 招远市| 高雄市| 大兴区| 六盘水市| 罗山县| 莱芜市| 新密市| 牟定县| 武平县| 望谟县| 微博| 海盐县| 雷州市| 白玉县| 洛浦县| 盐山县| 黎川县| 西丰县| 巴林右旗| 潜江市| 德阳市| 洛川县|