#spring-boot #kotlin #dependency-injection #mapstruct
#весенняя загрузка #kotlin #внедрение зависимостей #mapstruct
Вопрос:
я преобразовал коды загрузки java spring в kotlin, теперь у меня ошибка в интерфейсе структуры карты и классе конфигурации компонента
Это мой интерфейс Mapper
@Component
@Mapper
interface PersonMapper {
fun toPerson(personDTO: PersonDTO?): Person?
fun toPersonDTO(person: Person?): PersonDTO?
fun toPersons(personDTOS: List<PersonDTO?>?): List<Person?>?
fun toPersonDTOs(personList: List<Person?>?): List<PersonDTO?>?
companion object {
@JvmStatic
val INSTANCE: PersonMapper = Mappers.getMapper(PersonMapper::class.java)
}
}
и моя конфигурация компонента
@Configuration
class BeanConfig {
@Bean
@Primary
fun personMapper(): PersonMapper {
return PersonMapper.INSTANCE
}
}
и моя ошибка
Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'personController' defined in file [D:ZabanServertargetclassesirktcoderszabanpersonPersonController.class]: Unsatisfied dependency expressed through constructor parameter 0; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'personService' defined in file [D:ZabanServertargetclassesirktcoderszabanpersonPersonService.class]: Unsatisfied dependency expressed through constructor parameter 1; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'personMapper' defined in class path resource [ir/ktcoders/zaban/config/BeanConfig.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [ir.ktcoders.zaban.person.PersonMapper]: Factory method 'personMapper' threw exception; nested exception is java.lang.ExceptionInInitializerError
Ответ №1:
Во-первых, вы должны удалить @Component
из интерфейса, поскольку он не приносит никакого значения (но он также не является причиной ошибки).
Сложно сказать больше, но ExceptionInInitializerError
, похоже, в Mappers
классе есть проблема, поэтому, пожалуйста, предоставьте ее код. Может быть, он еще не инициализирован и не может найти этот mapper?