当前位置: 首页 > 知识库问答 >
问题:

Spring Boot和Spring数据没有找到bean entityMangerFactory

聂季同
2023-03-14

我有一个启用了自动配置的Spring boot应用程序。我的应用程序分为4个模块:核心、模型、rest和存储库。存储库模块使用Springhtml" target="_blank">数据和Hibernate。它是一个包含所有类实体和所有spring数据存储库的模块。

问题是我的应用程序找不到EntityManagerFactory,在我看来应该通过基于添加的Hibernate依赖项的自动配置来创建。

我得到的错误是:

org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'entityManagerFactory' available

这是我的主要gradle配置:

buildscript {
    repositories {
        mavenCentral()
    }

    dependencies {
        classpath("org.springframework.boot:spring-boot-gradle-plugin:2.0.5.RELEASE")
    }
}

plugins {
    id 'java'
    id 'idea'
    id 'org.springframework.boot' version "2.1.0.RELEASE"
    id 'io.spring.dependency-management' version "1.0.6.RELEASE"
    id 'net.ltgt.apt' version '0.9'
}

group 'com.wat'
version '1.0-SNAPSHOT'

sourceCompatibility = 1.8

repositories {
    mavenCentral()
}

dependencies {
    compile project(':core')
    compile project(':model')
    compile project(':rest')
    compile project(':repository')

    compile group: 'org.springframework.boot', name: 'spring-boot-starter-security', version: '2.1.0.RELEASE'
    compile group: 'io.jsonwebtoken', name: 'jjwt', version: '0.9.1'

    compile "org.mapstruct:mapstruct-jdk8:1.2.0.Final"
    apt "org.mapstruct:mapstruct-processor:1.2.0.Final"
    testCompile group: 'junit', name: 'junit', version: '4.12'
}


allprojects {
    apply plugin: "java"
    repositories {
        mavenCentral()
    }

    dependencies {
        compileOnly 'org.projectlombok:lombok:1.18.2'
        compile group: 'org.springframework', name: 'spring-context', version: '5.1.1.RELEASE'
        compile group: 'org.springframework.boot', name: 'spring-boot-starter-web', version: '2.1.0.RELEASE'

        compile "org.mapstruct:mapstruct-jdk8:1.2.0.Final"
        compile "org.mapstruct:mapstruct-processor:1.2.0.Final"
    }
}

我的主要课程

@SpringBootApplication
public class Application {
    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
}

我的存储库模块梯度文件:

plugins {
    id 'net.ltgt.apt'
}

dependencies {
    compile group: 'org.springframework.data', name: 'spring-data-jpa', version: '2.1.2.RELEASE'
    compile group: 'org.hibernate', name: 'hibernate-core', version: '5.3.7.Final'
    compile 'mysql:mysql-connector-java:8.0.13'

    compile project(":model")
    testCompile group: 'junit', name: 'junit', version: '4.12'
}

和我的存储库模块配置类:

@Configuration
@EnableJpaRepositories(basePackages = "com.wat.zpm.repository")
@EnableTransactionManagement
@EnableAutoConfiguration
public class RepositoryConfiguration {

}

据我所知,spring自动配置器会根据类路径类自动创建bean EntityManagerFactory,所以在给定注释的情况下一切都会正常工作。

更重要的是,自动配置日志显示HibernateJPA自动配置已匹配。

缺少EntityManagerFactory的类:

@Repository
    public class UserRepositoryServiceImpl implements UserRepositoryService {

        private final UserEntityMapper userMapper;
        private final UserRepository userRepository;

        public UserRepositoryServiceImpl(UserEntityMapper userMapper, UserRepository userRepository1) {
            this.userMapper = userMapper;
            this.userRepository = userRepository1;
        }
    }

用户存储库(UserRepository)是一个扩展JpaRepository的接口

我做了一项研究,没有找到我的项目可能会错过的注释或依赖项。

共有1个答案

尹昀
2023-03-14

您在RepositoryConfiguration类中缺少@ComponantScan

下面是componentscan注释的重要说明。

 类似资料:
  • 我正在逐步将Spring Boot引入Spring JPA项目。我的意图是首先介绍Spring Boot,而不是在一些后期的Spring数据,但我找不到任何使用Spring Boot JPA而没有Spring数据的示例(也找不到合适的启动器)。 怎么会?在没有Spring数据的情况下,将Spring Boot引入Spring JPA项目有什么好处吗?或者只有在Spring数据到位的情况下才有意义。

  • 创建一个jest测试,如: 失败,原因是 但是,确实将 定义为节点 16,因此如下所示: 正确输出。 如何配置开玩笑以使此测试通过?显然,在开玩笑的测试运行器中发生了一些事情,无法在当前节点环境中执行,或者正在剥离特定的内置功能,只是我似乎找不到任何有关如何调试或调整的文档。 通过在“纯js”中手动编写编码或依赖于类似的东西,可以解决一些问题,但我特别感兴趣的是为什么jest执行结尾无法找到似乎存

  • 我正在使用kustomize在一个新的k8s集群(v1.17.2)上将清单传输到kubectl。这包括CRD,但其他对象无法找到它们。例如: CRD是在我的kubectl的部分中定义的,它们显示在我向kubectl传送的输出中,我确信上次将所有内容放在一个文件中的方法是有效的。 如果我先应用CRD,然后分别应用主清单,这一切都会顺利进行。我能同时做这些吗?如果是,我做错了什么;如果没有,为什么它以

  • 我使用springboot和maryadb数据库进行训练。当我测试数据恢复时,我在邮递员中收到这样一条消息: 。我在复制粘贴中尝试了几个教程,我总是有相同的消息。我也会把控制台中的消息。提前谢谢你的帮助。 控制器 服务 回应的 模型 应用属性 安慰

  • 问题内容: 我想创建一个作业,但是我想在没有任何数据库持久性的情况下运行它。不幸的是,spring-batch要求以某种方式将作业周期写入数据库,从而迫使我至少提供某种带有transactionmanager和Entitymanager的数据库。 是否可以防止元数据并独立于txmanagers和数据库运行? 更新: 问题答案: 我回到我自己的问题上,因为该解决方案不再起作用。从spring-bat

  • 我使用的是Spring Boot MVC,Spring的在数据源配置之前被调用,数据源配置加载到中。 总是首先被调用,因此从来没有为Autowed定义过bean。 我尝试了从到的所有方法。我找不到一个像样的解释。但是我需要在数据源运行WebSecurity之前为它创建一个Bean