Отредактировано для добавления структуры процедуры:
главная / 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-компонента, чтобы посмотреть, не вызывает ли это проблему.
Заранее благодарю за любую помощь!