我正在学习Spring Boot,在我的第一个设置中我遇到了这个问题:
Failed to configure a DataSource: 'url' attribute is not specified and no embedded datasource could be configured
我在网上查找了解决方案,并找到了一些解决方案,包括Stackoverflow上的解决方案,但没有一个起作用。
我的简单代码:
@SpringBootApplication
@RestController
public class SpringBootDemoApplication {
public static void main(String[] args) {
SpringApplication.run(SpringBootDemoApplication.class, args);
}
@RequestMapping(value = "/")
public String response(){
return "You made it!";
}
}
我的POM:
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
我的application.properties:
spring.datasource.url=jdbc:mysql://localhost:3306/hrdb?autoReconnect=true
spring.datasource.username=root
spring.datasource.password=passw0rd
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
我还创建了以下文件:
@Configuration
public class DBConfig {
@Bean
public DataSource dataSource() {
DriverManagerDataSource dataSource = new DriverManagerDataSource();
dataSource.setDriverClassName("com.mysql.jdbc.Driver");
dataSource.setUrl("jdbc:mysql://localhost:3306/hr?autoReconnect=true");
dataSource.setUsername("root");
dataSource.setPassword("passw0rd");
return dataSource;
}
}
我在单元测试或启动服务时遇到了提到的错误。我发现使它起作用的唯一方法是禁用数据源自动配置:
@SpringBootApplication(exclude = DataSourceAutoConfiguration.class)
需要您的帮助。谢谢。
答案 0 :(得分:1)
检查您的数据库配置-似乎覆盖了Spring的默认数据源,但url与application.properties中的URL不同:“ jdbc:mysql:// localhost:3306 / hr?autoReconnect = true”
在属性中,您具有: “ jdbc:mysql:// localhost:3306 / hrdb?autoReconnect = true”
“ hr”与“ hrdb”。
我将完全摆脱此类,而在pom.xml中声明相关的JDBC驱动程序,然后让Spring负责连接。