提问者:小点点

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


我有一个启用了自动配置的Spring boot应用程序。我的应用程序分为4个模块:核心、模型、rest和存储库。存储库模块使用Spring数据和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个答案

匿名用户

您在RepositoryConfiguration类中缺少@ComponantScan

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