Я пытаюсь создавать микросервисы с помощью Spring Boot 3.0.2 и Spring Cloud. Я пытаюсь создать один микросервис, который подключается к базе данных Postgres, работающей в докере. Я получаю следующие ошибки:
org.springframework.beans.factory.UnsatisfiedDependencyException: ошибка при создании bean-компонента с именем «customerController», определенным в файле [/Users/.../customer/CustomerController.class]: неудовлетворенная зависимость, выраженная через параметр конструктора 0: ошибка при создании bean-компонента с именем « customerService», определенный в файле [/Users/...customer/CustomerService.class]: неудовлетворенная зависимость, выраженная через параметр конструктора 0: ошибка при создании bean-компонента с именем «customerRepository», определенным в com.ioannispriovolos.customer.CustomerRepository, определенным в @EnableJpaRepositories, объявленным на JpaRepositoriesRegistrar.EnableJpaRepositoriesConfiguration: неуправляемый тип: класс com.ioannispriovolos.customer.Customer
Вызвано: java.lang.IllegalArgumentException: не управляемый тип: класс com.ioannispriovolos.customer.Customer
Я много искал похожие вопросы в переполнении стека, но ни один из них не дал мне решения. Я предоставляю клиентский контроллер.
package com.ioannispriovolos.customer;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@Slf4j
@RestController
@RequestMapping("api/v1/customers")
public record CustomerController (CustomerService customerService){
@PostMapping
public void registerCustomer(@RequestBody CustomerRegistrationRequest customerRegistrationRequest) {
log.info("new customer registration {}", customerRegistrationRequest);
customerService.registerCustomer(customerRegistrationRequest);
}
}
Если вам нужно больше кода с моей стороны, пожалуйста, сообщите мне, и я отредактирую вопрос. Я предоставляю класс Customer после упоминания в комментариях.
package com.ioannispriovolos.customer;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import javax.persistence.*;
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
@Entity
public class Customer {
@Id
@SequenceGenerator(
name = "customer_id_sequence",
sequenceName = "customer_id_sequence"
)
@GeneratedValue(
strategy = GenerationType.SEQUENCE,
generator = "customer_id_sequence"
)
private Integer id;
private String firstName;
private String lastname;
private String email;
}
@kerbermeister Спасибо за ответ, я отредактировал сообщение с классом, который вы меня просили.
Вы используете Spring Boot 3?
Да, я знаю, 3.0.2, если быть точным.
Модуль Spring Boot JPA в составе выпуска Spring Boot 3 стал работать с Jakarta Persistence API, а не с javax.persistence.api. Вот почему @EntityScan не находит объекты.
Читайте документы
Зависимость Джакарты
Добавьте эту зависимость в свой pom и измените импорт в своих объектах.
Изменить import javax.persistence.*; на import jakarta.persistence.*;
Предоставьте код класса Customer