Я пытаюсь записать данные sh в мою базу данных, используя JpaRepository, но произошла ошибка, которая мешала мне сделать это - PullRequest
0 голосов
/ 17 апреля 2020
    *************************** APPLICATION FAILED TO START ***************************

Description:

Field userRepository in com.Lex.Exercise.Service.RegistrationService required a bean of type 'com.Lex.Exercise.Repository.UserRepository' that could not be found.

The injection point has the following annotations:
    - @org.springframework.beans.factory.annotation.Autowired(required=true)


Action:

Consider defining a bean of type 'com.Lex.Exercise.Repository.UserRepository' in your configuration.

// UserRepository

package com.Lex.Exercise.Repository;

import org.springframework.data.jpa.repository.JpaRepository;

import com.Lex.Exercise.Model.UserEntity;

  public interface UserRepository extends JpaRepository<UserEntity, String>{

  }

// RegistrationService

@ComponentScan(basePackages = "com.Lex.Exercise.Repository")
@Component
public class RegistrationService {  
@Autowired
private UserRepository userRepository;
//business methods and other validations comes here
}

Это основной класс

    package com.Lex.Exercise.SpringBootDemo;
@SpringBootApplication
@PropertySource(value = { "classpath:configuration.properties" })
public class SpringBootDemoApplication implements CommandLineRunner {

    @Autowired
    private RegistrationService service;
    public static void main(String[] args) {
        SpringApplication.run(SpringBootDemoApplication.class, args);
    }
}

Ниже приведена структура проекта: /SpringBootDemo/src/main/java/com/Lex/Exercise/Model/User.java / SpringBootDemo / src / main / java / com / Lex / Exercise / Model / UserEntity. java /SpringBootDemo/src/main/java/com/Lex/Exercise/Repository/UserRepository.java /SpringBootDemo/src/main/java/com/Lex/Exercise/Service/RegistrationService.java / SpringBot src / main / java / com / Lex / Exercise / SpringBootDemo / SpringBootDemoApplication. java /SpringBootDemo/src/main/resources/application.properties /SpringBootDemo/src/main/resources/configuration.properties*1014 1016 * Пожалуйста, помогите мне, как я мог решить эту проблему

Ответы [ 2 ]

1 голос
/ 17 апреля 2020

Удалить @ComponentScan(scanBasePackages = "com.Lex.Exercise.Repository") на вашем RegistrationService.class

И ваш SpringBootDemoApplication.class должен выглядеть следующим образом. Тогда ваши компоненты в подпакетах com.Lex.Exercise будут внедрены в контекст приложения.

@SpringBootApplication
@ComponentScan(basePackages = {"com.Lex.Exercise"})
public class SpringBootDemoApplication{
    public static void main(String[] args) {
        new SpringApplication(SpringBootDemoApplication.class).run(args);
    }
}

В целом, хорошая идея поместить SpringApplication в пакет верхнего уровня (как в вашем случае com.Lex.Exercise), потому что Spring Boot автоматически сканирует все подпакеты этого класса. Так что вам не понадобятся дополнительные @ComponentScan

0 голосов
/ 17 апреля 2020

@ComponentScan(basePackages = "com.Lex.Exercise.Repository") принадлежит вашей конфигурации, это может быть класс вашего приложения

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