SpringBoot JPA @Autowired исключение не найдено - PullRequest
0 голосов
/ 05 апреля 2019

Отредактировано для добавления структуры процедуры:

главная / Java привет (пакет) Приложение (основное приложение) TestRestController Модели (пакет) Тестовое задание услуги (упаковка) TestRepo (интерфейс)

В настоящее время я смотрю на сканирование компонентов, поскольку только что выпустил «repo.Test», исключение - подсказка.

Я прошел многочисленные уроки и вопросы и до сих пор не могу найти ответ на свой конкретный вопрос, который, скорее всего, связан с моим непониманием.

У меня есть приложение весенней загрузки, к которому я добавляю БД. Я следовал этому уроку: https://www.callicoder.com/spring-boot-rest-api-tutorial-with-mysql-jpa-hibernate/

Однако, когда я пытаюсь запустить свое приложение (после идентичных шагов), я получаю исключение:

org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'testRestController': Unsatisfied dependency expressed through field 'testRepo'; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'repo.TestRepo' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}

У меня есть еще один компонент, подключенный автоматически, главное отличие в том, что этот компонент (тот, который работает) имеет сервис, реализующий интерфейс и класс конфигурации компонента. Ни один из примеров для JPA не следует этой модели, и кажется глупым создавать сервис для повторной реализации методов из JPARepo.

Это контроллер, который я использую:

    @RestController
public class TestRestController {

    @Autowired
    GreetingService greetingService;

    @Autowired
    TestRepo testRepo;

    @RequestMapping("/hello")
    public String home() {
        return greetingService.greet();
    }

    @RequestMapping("/testrepo")
        public String testrepo() {

        Test test = new Test("steve");

        testRepo.save(test);
        Long idOftest = test.getId();

        test = null;
        test = testRepo.findById(idOftest).get();

        return "DID THIS WORK::::: + "+ test.toString();
    }

с интерфейсом

    @Repository
public interface TestRepo extends JpaRepository<Test, Long> {
}

и модель:

    @Entity
@Data
public class Test {

    private final String name;

    public Test(String name){
        this.name = name;
    }

    @Id
    @GeneratedValue
    private Long id;

    public Long getId(){
        return this.id;
    }
}

Основное приложение:

    @SpringBootApplication
public class Application {

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

//    @Bean
//    public CommandLineRunner commandLineRunner(ApplicationContext ctx ) {
//        return args -> {
//
//            System.out.println("Let's inspect the beans provided by Spring Boot:");
//
//            String[] beanNames = ctx.getBeanDefinitionNames();
//            Arrays.sort(beanNames);
//            for (String beanName : beanNames) {
//                System.out.println(beanName);
//            }
//
//
//        };
//    }


}

Я недавно прокомментировал аннотацию bean-компонента, чтобы посмотреть, не вызывает ли это проблему.

Заранее благодарю за любую помощь!

1 Ответ

0 голосов
/ 05 апреля 2019

Вы получаете это исключение, потому что ваш класс TestRepo является частью пакета repo, который не является иерархией подпакета пакета класса Application.@SpringBootApplication определяет автоматическое сканирование компонентов пакетов, которые являются подпакетами вашего основного класса, т.е. Application.Если вы хотите решить эту проблему без изменения иерархии пакетов, добавьте строку ниже @SpringBootApplication:

@ComponentScan({"repo","your.application.class.package"}) //// add the names of the packages where the controllers, services, repositories beans are stored
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...