我正在使用Spring Boot JPA创建应用程序,正在将MySQL用作数据库。
以下是我的application.properties
spring.jpa.hibernate.ddl-auto=update
spring.datasource.url=jdbc:mysql://localhost:3306/mydb
spring.datasource.username=root
spring.datasource.password=
spring.jpa.database-platform=org.hibernate.dialect.MySQL8Dialect
我添加了以下依赖项
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.17</version>
</dependency>
当我检查调试日志时,我可以在类路径中看到mysql java连接器,但仍然出现以下错误
2019-07-29 10:03:00.742信息10356 --- [主] o.a.c.c.C. [Tomcat]。[localhost]。[/]:初始化Spring 嵌入式WebApplicationContext 2019-07-29 10:03:00.742信息10356- [main] o.s.web.context.ContextLoader:根 WebApplicationContext:初始化在1534毫秒内完成2019-07-29 10:03:00.789 WARN 10356 --- [main] ConfigServletWebServerApplicationContext:遇到异常 在上下文初始化期间-取消刷新尝试: org.springframework.beans.factory.UnsatisfiedDependencyException: 创建名称为bean的错误 'org.springframework.boot.autoconfigure.orm.jpa.HibernateJpaConfiguration': 通过构造函数参数0表示的不满足的依赖关系; 嵌套异常为 org.springframework.beans.factory.BeanCreationException:错误 创建在类路径资源中定义的名称为“ dataSource”的bean [org / springframework / boot / autoconfigure / jdbc / DataSourceConfiguration $ Hikari.class]: 通过工厂方法实例化Bean失败;嵌套异常为 org.springframework.beans.BeanInstantiationException:失败 实例化[com.zaxxer.hikari.HikariDataSource]:工厂方法 'dataSource'引发异常;嵌套异常为 org.springframework.boot.autoconfigure.jdbc.DataSourceProperties $ DataSourceBeanCreationException: 无法确定合适的驱动程序类别2019-07-29 10:03:00.789 INFO 10356 --- [main] o.apache.catalina.core.StandardService:正在停止服务[Tomcat] 2019-07-29 10:03:00.805 INFO 10356 --- [主] ConditionEvaluationReportLoggingListener:
启动ApplicationContext时出错。显示条件报告 在启用“调试”的情况下重新运行您的应用程序。 2019-07-29 10:03:00.805 错误10356 --- [主] o.s.b.d.LoggingFailureAnalysisReporter:
********************************应用程序无法启动
说明:
无法配置数据源:未指定'url'属性,并且 无法配置嵌入式数据源。
原因:无法确定合适的驱动程序类别
操作:
请考虑以下事项:如果要嵌入式数据库(H2,HSQL或 Derby),请将其放在类路径上。如果您有数据库设置 要从特定配置文件加载您可能需要激活它(否 个人资料当前处于活动状态)。
答案 0 :(得分:0)
Spring Boot自动配置尝试根据添加到类路径的依赖项自动配置Bean。由于您对类路径具有JPA依赖关系,因此Spring Boot尝试自动配置JPA数据源。问题是,您没有为Spring提供执行自动配置所需的完整信息。
将此缺少的属性添加到您的application.properties
文件中,以便spring可以自动配置
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
使用公用程序构建器类DataSourceBuilder可以以编程方式定义数据源的另一种方法。为此,您需要提供数据库URL,用户名,密码和SQL驱动程序信息以创建数据源:
@Configuration
public class DatasourceConfig {
@Bean
public DataSource datasource() {
return DataSourceBuilder.create()
.driverClassName("com.mysql.cj.jdbc.Driver")
.url("jdbc:mysql://localhost:3306/myDb")
.username("root")
.password("pass")
.build();
}
}
答案 1 :(得分:0)
这是我无法检测到的配置错误,我重新创建了相同的项目,一切开始正常工作
答案 2 :(得分:0)
更改:
spring.datasource.url=jdbc:mysql://localhost:3306/mydb
收件人:
spring.datasource.url=jdbc:mysql://${MYSQL_HOST:localhost}:3306/mydb
答案 3 :(得分:0)
答案 4 :(得分:0)
Spring Autoconfigure 寻找 2 个属性来加载适当的驱动程序,
实际上 Spring Autoconfigure 只需要 spring.datasource.url 并且它可以从那里派生驱动程序类名。
答案 5 :(得分:0)
我遇到了同样的问题,我通过右键单击项目,maven/update 项目解决了它,然后您应该选择您的项目并接受。