Загрузка Spring и данные Spring. Bean-компонент не найден. EntityMangerFactory - PullRequest
0 голосов
/ 02 ноября 2018

У меня есть загрузочное приложение Spring с включенной автоконфигурацией. Мое приложение разделено на 4 модуля: ядро, модель, отдых и хранилище. Модуль репозитория использует данные 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);
    }
}

Файл Gradle модуля репозитория:

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 Autoconfigurer автоматически создает bean-компонент EntityManagerFactory на основе классов classpath, поэтому все должно работать с данными аннотациями.

Более того, в журнале автоконфигурации указано, что HibernateJpaAutoConfiguration соответствует.

Класс, который пропускает 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 Ответ

0 голосов
/ 02 ноября 2018

Вы пропускаете @ComponantScan в RepositoryConfiguration классе.

здесь - отличное объяснение аннотации компонентов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...