SpringBoot не может найти bean-компонент для инъекции

У меня есть простое приложение SpringBoot со следующими классами:

org.domain.abcpoc.controllers.DataController.java

package org.domain.abcpoc.controllers;

import org.domain.abcpoc.entities.UserEntity;
import org.domain.abcpoc.repositories.UserRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequestMapping("/data")
public class DataController {
    @Autowired
    private UserRepository repo;

    @GetMapping()
    public String test() {
        return "test";
    }

    @GetMapping("/user")
    public UserEntity getUser() {
        return repo.findById("E7####J2####1##").orElse(null);
    }
}

org.domain.abcpoc.repositories.UserRepository.java

package org.domain.abcpoc.repositories;

import org.domain.abcpoc.entities.UserEntity;
import org.springframework.data.repository.CrudRepository;

public interface UserRepository extends CrudRepository<UserEntity, String> {
}

Мой основной класс Spring:

package org.domain.abcpoc;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

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

И исключение, которое я получаю, это:

ПРИЛОЖЕНИЕ НЕ ЗАПУЩЕНО


Описание:

Обязательное поле repo в org.domain.abcpoc.controllers.DataController bean-компонент типа org.domain.abcpoc.repositories.UserRepository, который невозможно найти.

Точка впрыска имеет следующие аннотации:

  • @org.springframework.beans.factory.annotation.Autowired(обязательно=true)

Действие:

Рассмотрим определение bean-компонента типа 'org.domain.abcpoc.repositories.UserRepository' в вашем конфигурация.

Может ли что-то еще быть проблемой, основанной на этом исключении и предоставленных классах? Конфигурация базы данных? пом.xml?

Это часть модуля Java, может быть что-то в родительском файле pom.xml?

вам нужно реализовать UserRepository и внедрить реализацию в контекст с помощью @Component или чего-то еще

n1nja88888 06.06.2023 12:35

Попробуйте добавить @EnableJpaRepositories в свой основной класс Spring. Вы можете добавить его прямо под @SpringBootApplication.

StaticBeagle 06.06.2023 12:44

@StaticBeagle Это устранило эту проблему. Спасибо. Вы можете написать это как ответ, и я приму его.

whatamidoingwithmylife 06.06.2023 12:49
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
3
58
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Вы можете добавить аннотацию @EnableJpaRepositories к основному классу Spring следующим образом:

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

Аннотируйте свой интерфейс аннотацией @Repository, после чего автоматическое сканирование spring-boot создаст bean-компонент UserRepository. @EnableJpaRepositories также можно использовать, когда в вашем приложении настроено несколько источников данных.

Другие вопросы по теме

Безопасность Spring: удалить файлы cookie от пользователя, когда я удаляю пользователя
Как предотвратить утечку памяти, вызванную потоками в Tomcat9 и Netty при использовании Lettuce с Spring?
Com.fasterxml.jackson.databind.exc.MismatchedInputException: невозможно десериализовать значение типа `[]` из значения объекта (токен `JsonToken.START_OBJECT`)
Как издеваться над сторонней библиотекой с помощью Mockito?
После обновления весенней загрузки до 3.0.6 возникает ошибка при разрешении конечных точек oauth из веб-клиента в Mac M1
Ошибка таблицы уже существует при попытке создать пользовательский класс в Springboot
Доступ к Spring Security запрещен с помощью Spring Boot 3.0
ClassCastException для конфигурации прокси-сервера CGLIB и org.springframework.cglib.proxy.Factory после обновления Spring до 6.0.9 и Spring Boot до 3.0.6
Spring Boot Неверная дата возвращена
403 Запрещено: "<HTML><HEAD><EOL><TITLE>Отказано в доступе</TITLE><EOL></HEAD><BODY><EOL><H1>У вас нет разрешения на доступ