欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Spring Boot中自動化配置的利弊以及解決方法

 更新時間:2017年08月01日 08:34:24   作者:翟永超  
這篇文章主要給大家介紹了關于Spring Boot中自動化配置的利弊以及解決方法,文中通過示例代碼介紹的非常詳細,對大家學習或者使用Spring Boot具有一定的參考學習價值,需要的朋友們下面來一起看看吧。

本文主要給大家介紹了關于Spring Boot自動化配置的利弊及解決方法的相關內(nèi)容,分享出來供大家參考學習,下面話不多說了,來一起看看詳細的介紹:

Spring Boot中的雙刃劍:自動化配置

在之前的文章中,我們通過各種功能性示例體驗了Spring Boot的自動化配置給我們所帶來的超便利的新開發(fā)方式。但是,在一些情況下Spring Boot的自動化配置也會給我們?nèi)莵聿簧俚穆闊?,比如這些場景:

項目依賴復雜的情況下,由于依賴方的依賴組織不夠嚴格,可能引入了一些實際我們不需要的依賴,從而導致我們的項目滿足一些特定的自動化配置。

傳統(tǒng)Spring項目轉(zhuǎn)換為Spring Boot項目的過程中,由于不同的組織方式問題,引發(fā)自動化配置加載的錯誤,比如:通過xml手工組織的多數(shù)據(jù)源配置等。

上面這些原因都會導致不必要的自動化配置加載而導致應用無法啟動或觸發(fā)/health的健康檢查不通過等問題。比如,我們在改造傳統(tǒng)Spring項目到Spring Boot項目中碰到的一些錯誤:

六月 21, 2017 6:23:47 下午 org.apache.catalina.loader.WebappClassLoaderBase clearReferencesThreads
警告: The web application [ROOT] appears to have started a thread named [Abandoned connection cleanup thread] but has failed to stop it. This is very likely to create a memory leak. Stack trace of thread:
 java.lang.Object.wait(Native Method)
 java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:143)
 com.mysql.jdbc.AbandonedConnectionCleanupThread.run(AbandonedConnectionCleanupThread.java:43)
2017-06-21 18:23:47,230 INFO [main] org.springframework.boot.autoconfigure.logging.AutoConfigurationReportLoggingInitializer - 
Error starting ApplicationContext. To display the auto-configuration report re-run your application with 'debug' enabled.
2017-06-21 18:23:47,237 ERROR [main] org.springframework.boot.diagnostics.LoggingFailureAnalysisReporter - 
***************************
APPLICATION FAILED TO START
***************************
Description:
Cannot determine embedded database driver class for database type NONE
Action:
If you want an embedded database please put a supported one on the classpath. If you have database settings to be loaded from a particular profile you may need to active it (no profiles are currently active).

從報錯信息中,我們就可以分析出錯誤原因是觸發(fā)了數(shù)據(jù)源的自動化配置,然而當前項目其實并不需要數(shù)據(jù)源。查其根源是依賴方提供的API依賴中引用了一些多余的依賴觸發(fā)了該自動化配置的加載。

如何解決

為了解決上面所述的問題,我們可以用兩種方法來解決:

  • 通過外部依賴的修改來解決:通過與依賴方溝通,在對方提供的API依賴中去掉不必要的依賴
  • 通過禁用指定的自動化配置來避免加載不必要的自動化配置,下面列舉了禁用的方法:

使用了@EnableAutoConfiguration的時候

@EnableAutoConfiguration(exclude={DataSourceAutoConfiguration.class})

使用了@SpringBootApplication的時候

@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class})

使用了@SpringCloudApplication的時候

@EnableAutoConfiguration(exclude={DataSourceAutoConfiguration.class})
@SpringCloudApplication

通過配置文件來設置

spring.autoconfigure.exclude=org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration

總結

好了,大概就這樣,以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學習或者工作能帶來一定的幫助,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持

相關文章

  • SpringBoot為啥不用配置啟動類的實現(xiàn)

    SpringBoot為啥不用配置啟動類的實現(xiàn)

    這篇文章主要介紹了SpringBoot為啥不用配置啟動類的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-04-04
  • Java十大經(jīng)典排序算法圖解

    Java十大經(jīng)典排序算法圖解

    這篇文章主要介紹了Java十大經(jīng)典排序算法,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-11-11
  • javaweb中ajax請求后臺servlet(實例)

    javaweb中ajax請求后臺servlet(實例)

    下面小編就為大家?guī)硪黄猨avaweb中ajax請求后臺servlet(實例)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-06-06
  • Java兩種方式實現(xiàn)動態(tài)代理

    Java兩種方式實現(xiàn)動態(tài)代理

    Java 在 java.lang.reflect 包中有自己的代理支持,該類(Proxy.java)用于動態(tài)生成代理類,只需傳入目標接口、目標接口的類加載器以及 InvocationHandler 便可為目標接口生成代理類及代理對象。我們稱這個Java技術為:動態(tài)代理
    2020-10-10
  • IDEA如何對單個的java class文件打成jar包

    IDEA如何對單個的java class文件打成jar包

    這篇文章主要介紹了IDEA如何對單個的java class文件打成jar包問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-08-08
  • Windows環(huán)境IDEA下Ranger1.2.0源碼編譯詳細流程

    Windows環(huán)境IDEA下Ranger1.2.0源碼編譯詳細流程

    本文給大家講解Windows環(huán)境IDEA下Ranger1.2.0源碼編譯過程,通過配置Tomcat,發(fā)布?security-admin-web項目,編譯啟動tomcat即可完成,需要的朋友參考下
    2021-06-06
  • 解決Tomcat修改get提交請求亂碼問題

    解決Tomcat修改get提交請求亂碼問題

    這篇文章主要介紹了Tomcat修改get提交請求亂碼問題的解決方案,需要的朋友參考下
    2017-04-04
  • 一文搞懂Java項目中枚舉的定義與使用

    一文搞懂Java項目中枚舉的定義與使用

    枚舉就是用enum修飾是一種Java特殊的類,枚舉是class、底層是繼承了java.lang.Enum類的實體類。本文將詳解枚舉的定義與使用,需要的可以參考一下
    2022-06-06
  • JVM自定義類加載器在代碼擴展性實踐分享

    JVM自定義類加載器在代碼擴展性實踐分享

    這篇文章主要介紹了JVM自定義類加載器在代碼擴展性實踐分享,一個類型從被加載到虛擬機內(nèi)存中開始,到卸載出內(nèi)存為止,它的整個生命周期將會經(jīng)歷加載、驗證、準備、解析、初始化 、使用和卸載七個階段,其中驗證、準備、解析三個部分統(tǒng)稱為連接
    2022-06-06
  • SpringCloud項目集成Feign、Hystrix過程解析

    SpringCloud項目集成Feign、Hystrix過程解析

    這篇文章主要介紹了SpringCloud項目集成Feign、Hystrix過程解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-11-11

最新評論