Получение ошибки, связанной с созданием компонента, при запуске приложения Spring Boot - PullRequest
0 голосов
/ 20 октября 2019

Я изучаю весеннюю загрузку с JPA, и у меня возникла проблема при запуске моего приложения. Может ли кто-нибудь помочь мне решить эту проблему? Ошибка -

Description: Field userRepo in com.example.demo.controller.DemoController required a bean of type 'com.example.demo.repo.UserRepo' 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.example.demo.repo.UserRepo' in your configuration.

Контроллер

public class DemoController {
private static final String CLASS_NAME = DemoController.class.getName();
@Autowired
private UserRepo userRepo;

@Autowired
private UserServiceImpl userService;

  @PostMapping(value = "/hello", consumes = "application/json", produces = "application/json") 
  public String createUser(@RequestBody User user) {
       long count = userRepo.count();
      return "Done"; 
  }
}

хранилище

@Repository

public interface UserRepo extends JpaRepository<User, Integer> {    
}

Класс приложения

@SpringBootApplication
@ComponentScan("com.example.demo*")
@EnableJpaRepositories(basePackages = {"com.example.demo*"})
@EnableAutoConfiguration(exclude={DataSourceAutoConfiguration.class})
public class DemoApplication {

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

}

Структура проекта

enter image description here

Я аннотировал репозиторий с помощью @Repository и использовал @Autowiredна контроллере. Где я делаю не так?

Ответы [ 3 ]

1 голос
/ 20 октября 2019

Вы добавили довольно много annotations, которые на самом деле не нужны.

Внесите следующие изменения

     DemoController.java -> Add `@Controller or @RestController` annotation
     Application.java --> Remove annotations completely

    @ComponentScan() 
    @EnableJpaRepositories()
    @EnableAutoConfiguration()

Дайте мне знать, если это работает.

Попробуйте.

0 голосов
/ 20 октября 2019

У вас есть множество ненужных аннотаций, которые не требуются.

Согласно документации -

Как правило, мы рекомендуем размещать основной класс приложения в корневом пакете над другими классами. .

Я сомневаюсь, что компонентное сканирование не может сканировать ваш класс UserRepo .

Удалите все ненужные аннотации.

@ComponentScan("com.example.demo*")
@EnableJpaRepositories(basePackages = {"com.example.demo*"})
@EnableAutoConfiguration(exclude={DataSourceAutoConfiguration.class})
0 голосов
/ 20 октября 2019

Возможно, вам не хватает аннотации @EnableJpaRepositories в вашем классе конфигурации. Затем будет выполнен поиск всех классов с аннотацией @Repository.

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