场景:springboot集成数据源报错
记录:NO.238
本例环境:
spring-boot:2.2.0.RELEASE
jdk:1.8
报错信息:
Failed to configure a DataSource: 'url' attribute is not specified and no embedded datasource could be configured.
即:配置数据源时,url属性不能被指定,嵌入数据源不能被配置。
本例原因:在pom.xml中引入依赖,但是在application.yml没有配置数据源相关信息。
pom.xml配置:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.21</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.47</version>
</dependency>
application.yml配置:
spring:
datasource:
type: com.alibaba.druid.pool.DruidDataSource
url: jdbc:mysql://127.0.0.1:3306/platdb
username: root
password: 123456
driver-class-name: com.mysql.jdbc.Driver
解决:
在pom.xml中引入依赖,同时在application.yml配置数据源相关信息。
如果不想配置,则在启动类使用注解,也不报错。
@SpringBootApplication(exclude= {DataSourceAutoConfiguration.class})
但是,既然要使用数据源,却不配置,感觉有点奇怪。
但是,在使用多数据源配置时,得使用注解:
@SpringBootApplication(exclude= {DataSourceAutoConfiguration.class})
在启动类使用注解也无效情况
原因:在pom.xml中引入了druid-spring-boot-starter,还是会自动加载数据源配置,找不到配置信息也会报错。
pom.xml配置:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.1.21</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.47</version>
</dependency>
解决:
在pom.xml中引入依赖,同时在application.yml配置数据源相关信息。
以上,感谢。