使用 kotlin 在 Spring Boot 中映射结构接口错误
Posted
技术标签:
【中文标题】使用 kotlin 在 Spring Boot 中映射结构接口错误【英文标题】:map struct interface error in SpringBoot with kotlin 【发布时间】:2021-04-16 16:47:24 【问题描述】:我将 java spring boot 代码转换为 kotlin,现在我在 map struct 接口和 bean config 类中有错误
这是我的 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)
还有我的 Bean 配置
@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:\Zaban\Server\target\classes\ir\ktcoders\zaban\person\PersonController.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:\Zaban\Server\target\classes\ir\ktcoders\zaban\person\PersonService.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
类有问题,所以请提供它的代码。可能还没有初始化,找不到这个映射器?
【讨论】:
以上是关于使用 kotlin 在 Spring Boot 中映射结构接口错误的主要内容,如果未能解决你的问题,请参考以下文章
在 spring-boot 中使用 kotlin 挂起函数创建名称为“requestMappingHandlerMapping”的 bean 时出错
无法在 Eclipse 中使用 Kotlin 项目运行 Spring Boot
如何在 Spring Boot 和 Spring WebFlux 中使用“功能 bean 定义 Kotlin DSL”?
为啥@JacksonXmlProperty 使用 Kotlin 忽略 Spring Boot 中的参数?