自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Spring Boot自動化配置的利弊及解決之道

運維 自動化
在Spring Boot基礎(chǔ)教程系列文章中,我們通過各種功能性示例體驗了Spring Boot的自動化配置給我們所帶來的超便利的新開發(fā)方式。

[[194924]]

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

在Spring Boot基礎(chǔ)教程系列文章中,我們通過各種功能性示例體驗了Spring Boot的自動化配置給我們所帶來的超便利的新開發(fā)方式。但是,在一些情況下Spring Boot的自動化配置也會給我們?nèi)莵聿簧俚穆闊热邕@些場景:

  • 項目依賴復(fù)雜的情況下,由于依賴方的依賴組織不夠嚴格,可能引入了一些實際我們不需要的依賴,從而導(dǎo)致我們的項目滿足一些特定的自動化配置。
  • 傳統(tǒng)Spring項目轉(zhuǎn)換為Spring Boot項目的過程中,由于不同的組織方式問題,引發(fā)自動化配置加載的錯誤,比如:通過xml手工組織的多數(shù)據(jù)源配置等。

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

  1. 六月 21, 2017 6:23:47 下午 org.apache.catalina.loader.WebappClassLoaderBase clearReferencesThreads 
  2. 警告: 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: 
  3.  java.lang.Object.wait(Native Method) 
  4.  java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:143) 
  5.  com.mysql.jdbc.AbandonedConnectionCleanupThread.run(AbandonedConnectionCleanupThread.java:43) 
  6. 2017-06-21 18:23:47,230 INFO  [main] org.springframework.boot.autoconfigure.logging.AutoConfigurationReportLoggingInitializer -  
  7. Error starting ApplicationContext. To display the auto-configuration report re-run your application with 'debug' enabled. 
  8. 2017-06-21 18:23:47,237 ERROR [main] org.springframework.boot.diagnostics.LoggingFailureAnalysisReporter -  
  9. *************************** 
  10. APPLICATION FAILED TO START 
  11. *************************** 
  12. Description: 
  13. Cannot determine embedded database driver class for database type NONE 
  14. Action
  15. 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ù)源的自動化配置,然而當(dāng)前項目其實并不需要數(shù)據(jù)源。查其根源是依賴方提供的API依賴中引用了一些多余的依賴觸發(fā)了該自動化配置的加載。

如何解決

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

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

使用了@EnableAutoConfiguration的時候

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

使用了@SpringBootApplication的時候

  1. @SpringBootApplication(exclude = {DataSourceAutoConfiguration.class}) 

使用了@SpringCloudApplication的時候

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

通過配置文件來設(shè)置   

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

【本文為51CTO專欄作者“翟永超”的原創(chuàng)稿件,轉(zhuǎn)載請通過51CTO聯(lián)系作者獲取授權(quán)】

戳這里,看該作者更多好文

責(zé)任編輯:武曉燕 來源: 51CTO專欄
相關(guān)推薦

2009-05-05 14:30:19

虛擬化安全解決方案

2009-10-10 15:26:11

資產(chǎn)管理

2015-11-24 18:01:43

數(shù)字化醫(yī)療醫(yī)院PACS系統(tǒng)華為

2010-07-17 00:24:40

2018-06-08 10:45:18

云計算成本評估應(yīng)用程序

2010-05-11 13:45:54

2013-08-09 09:46:32

2023-10-18 08:12:34

Spring自動配置

2016-12-22 09:02:35

Linux誤刪文件

2014-12-10 11:16:21

華為數(shù)字化

2022-01-14 08:08:11

Java依賴沖突

2021-03-28 21:33:07

Redis熱點key

2021-02-03 09:04:11

解密Spring配置

2011-01-19 13:12:27

2012-06-05 19:18:43

BYODAvayaAvaya IDE

2012-02-13 10:30:18

2014-09-29 16:44:12

2011-08-18 14:23:52

Big Data

2011-09-10 20:48:34

2016-11-10 18:57:19

雙十一高并發(fā)
點贊
收藏

51CTO技術(shù)棧公眾號