ошибка интерфейса структуры карты в SpringBoot с kotlin

#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?