spring-boot-starter-data-jpa 依赖错误

Posted

技术标签:

【中文标题】spring-boot-starter-data-jpa 依赖错误【英文标题】:spring-boot-starter-data-jpa dependency error 【发布时间】:2018-03-01 04:42:13 【问题描述】:

我正在使用新版本的 Spring boot - 1.5.7。 但是,当我创建具有 jpa 依赖项的新 spring starter 项目时, 我遇到了奇怪的错误:

原因: org.springframework.beans.factory.NoSuchBeanDefinitionException: 否 “javax.sql.DataSource”类型的合格 bean 可用:预计在 至少 1 个符合自动装配候选资格的 bean。依赖 注释:

谁能帮助我: 这是我的pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.example</groupId>
    <artifactId>demo-11</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>jar</packaging>

    <name>demo-11</name>
    <description>Demo project for Spring Boot</description>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.5.7.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <java.version>1.8</java.version>
    </properties>

    <dependencies>
    <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>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>



</project>

【问题讨论】:

发布您的 application.properties 文件 为了测试问题,我新建了一个带有jpa依赖的spring starter项目,所以我的application.properties文件是空的。但是我以其他方式使用 oracle 数据库,当我添加 oracle 依赖项时,它给了我同样的错误。 com.oracleojdbc712.1.0.1.0 【参考方案1】:

您需要在依赖项中包含一个数据库。 如果找到数据库,spring boot 会自动为您配置数据源。

请参阅此示例,其中包含一个 h2 数据库。

https://spring.io/guides/gs/accessing-data-jpa/

【讨论】:

我添加了oracle依赖com.oracleojdbc712.1.0.1.0 ,但它给了我同样的错误。我也尝试使用 mysqlmysqlmysql-connector-java,但它也给了我同样的错误【参考方案2】:

您需要将数据库相关信息放入 application.properties 文件中

spring.jpa.hibernate.ddl-auto=create
spring.datasource.url=jdbc:mysql://localhost:3306/db_example
spring.datasource.username=springuser
spring.datasource.password=ThePassword

你需要把数据库依赖放在你的 pom.xml 中

<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
</dependency>

这是它在mysql官方网站上的列出方式,您可以尝试使用您选择的数据库。

【讨论】:

我添加了oracle依赖com.oracleojdbc712.1.0.1.0 (在此之前,我将 oracle ojdbc7.jar 导入 maven 存储库)。另外,我更改了 application.properties 文件: spring.jpa.hibernate.ddl-auto=create spring.datasource.url=jdbc:oracle:thin:@_______:1521/****** spring.datasource.username=* ****** spring.datasource.password=******* ,但它又给了我同样的错误 如果你能把你的整个项目发布到 git 上或者我可以看看。【参考方案3】:

需要根据application.yml文件中使用的数据库,将数据库放在pom.xml文件的依赖中:

    application.yml 文件:

datasource:
  url: jdbc:postgresql://localhost:5432/cadastro-api
  username: user
  password: password
    pom.xml 文件:

<dependency>
  <groupId>org.postgresql</groupId>
  <artifactId>postgresql</artifactId>
  <scope>runtime</scope>
</dependency>

【讨论】:

以上是关于spring-boot-starter-data-jpa 依赖错误的主要内容,如果未能解决你的问题,请参考以下文章