1. 問(wèn)題
初學(xué)者在使用IDEA創(chuàng)建Spring Boot應(yīng)用后直接運(yùn)行會(huì)遇到報(bào)錯(cuò):Failed to configure a DataSource: 'url' attribute is not specified and no embedd窑多,如下圖:
IDEA運(yùn)行Spring Boot應(yīng)用報(bào)錯(cuò)內(nèi)容
2. 解決方案:
1)方案一:適用沒(méi)有使用數(shù)據(jù)庫(kù)應(yīng)用祟牲,詳細(xì)解決方案如下:
在@SpringBootApplication
中加exclude
屬性阻止Spring Boot自動(dòng)配置JDBC馒过。
@SpringBootApplication(exclude={DataSourceAutoConfiguration.class})
public class XXXSpringApplication {
public static void main(String[] args) {
SpringApplication.run(UserManagerApplication.class, args);
}
}
2)方案二:適用應(yīng)用中使用了數(shù)據(jù)庫(kù),詳細(xì)解決方案如下:
通過(guò)在application.properties
文件中配置數(shù)據(jù)庫(kù)的信息來(lái)解決這個(gè)問(wèn)題裹赴,詳細(xì)的配置方案如下:
-
1. 在項(xiàng)目中找到
application.properties
文件朱盐,具體路徑:src/main/resources/applicatio.properties
椒拗,請(qǐng)參考下圖:
application.properties項(xiàng)目路徑
-
2. 在文件中配置數(shù)據(jù)的詳細(xì)信息
如上圖所示窑眯,新建的工程的application.properties
初始是一個(gè)空文件,沒(méi)有任何內(nèi)容湘换,請(qǐng)復(fù)制下面的配置信息到文件中
#數(shù)據(jù)庫(kù)相關(guān)配置
spring.datasource.url=jdbc:mysql://localhost:3306/databaseName
spring.datasource.username= userName
spring.datasource.password= password
- 第一行的
spring.datasource.url
是數(shù)據(jù)庫(kù)的地址宾舅,3306
是MySql默認(rèn)的本地端口,databaseName
需要替換成您自己創(chuàng)建的數(shù)據(jù)庫(kù)名稱彩倚; - 第二行和第三行中
spring.datasource.username
和spring.datasource.password
分別聲明了數(shù)據(jù)庫(kù)的用戶名賬號(hào)和密碼筹我;
3. 原因分析:
原因很明顯,就是在應(yīng)用中沒(méi)有配置datasource的一些相關(guān)屬性帆离。Spring Boot的自動(dòng)配置功能會(huì)根據(jù)加入classpath的依賴蔬蕊,嘗試自動(dòng)配置bean。因?yàn)槲覀兗尤肓薺dbc這個(gè)依賴哥谷,Spring Boot就會(huì)嘗試自動(dòng)配置JDBC DataSource岸夯。但問(wèn)題是Spring Boot還沒(méi)有得到足夠的信息進(jìn)行自動(dòng)配置。