springboot 如何取消starter的自動註入
springboot 取消starter的自動註入
starer是spring boot中一個很重要的概念,starter相當於一個模塊,它能將所需要的的依賴整合在一起並對模塊內的bean自動裝配到spring IOC容器,使用者隻需要在maven中依賴相應的starter包並無需做過多的依賴即可進行開發。
看例子
比如,我們導入瞭mybatis相關的依賴,但是我可能暫時沒用到數據庫,所以就沒有做數據庫相關的配置,這時候項目就會無法啟動
2020-03-08 22:13:10.396 WARN 10692 — [ main] ConfigServletWebServerApplicationContext : Exception encountered during context initialization – cancelling refresh attempt:
org.springframework.beans.factory.BeanCreationException: Error creating bean with name ‘dataSource’ defined in class path resource
[org/springframework/boot/autoconfigure/jdbc/DataSourceConfiguration$Hikari.class]: Bean instantiation via factory method failed;
nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate
[com.zaxxer.hikari.HikariDataSource]: Factory method ‘dataSource’ threw exception;nested exception is org.springframework.boot.autoconfigure.jdbc.DataSourceProperties$DataSourceBeanCreationException: Failed to determine a suitable driver class
因為springboot中默認的數據庫連接池是hikari,你沒有在application.properties裡面進行數據庫相關的配置的話,那麼就會無法自動裝載dataSource
Error creating bean with name ‘dataSource’ defined in class path resource [org/springframework/boot/autoconfigure/jdbc/DataSourceConfiguration$Hikari.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [com.zaxxer.hikari.HikariDataSource]
重點來瞭
如何取消相關starer的自動註入?
我們還是以數據庫的這個為例子:
@SpringBootApplication(exclude = DataSourceAutoConfiguration.class)
那麼,就需要在啟動類加上如上配置,取消DataSourceAutoConfiguration的自動註入
springbootApplication是一個組合註解,其實裡面真正實現自動註入功能的,是這個EnableAutoConfiguration註解
SpringBoot 自動註入問題
Description:
Field service in com.test.controller.UserController required a bean of type ‘com.test.service.UserService’ that could not be found.
Action:
Consider defining a bean of type ‘com.test.service.UserService’ in your configuration.
項目啟動的時候出現出現問題
run
controller
service
dao
配置文件如下
項目目錄
找瞭幾個類,該註解的也註解瞭。
以上為個人經驗,希望能給大傢一個參考,也希望大傢多多支持WalkonNet。
推薦閱讀:
- springBoot 項目排除數據庫啟動方式
- 使用springboot不自動初始化數據庫連接池
- Spring的@Autowired加到接口上但獲取的是實現類的問題
- SpringBoot @Autowired註解註入規則介紹
- SpringBoot項目報錯:"Error starting ApplicationContext…."解決辦法