【发布时间】:2020-01-15 07:39:48
【问题描述】:
目前我有如下课程:
interface Mapper<IN, OUT> {
fun map(input: IN): OUT
}
@Service
class ContractPhaseMapper: Mapper<Contract, List<ContractPhase>> {
override fun map(input: Contract): List<ContractPhase> = contract.phases.map {
ContractPhase(...)
}
}
@Service
class ContractPhaseProcessor(private val contractPhaseMapper: Mapper<Contract, List<ContractPhase>>) {
fun createResponse(contracts: List<Contract>) = SomeResponse(
contractPhases = contracts.map { contractPhaseMapper.map(it) }.flatten()
)
}
不幸的是,这导致 Spring 退出并显示消息:
Parameter # of constructor in my.package.ContractPhaseProcessor required a bean of type 'my.package.mapper.Mapper' that could not be found.
如果我尝试像 Mapper<Contract, Customer> 这样的映射器,它会正常工作。
我也尝试使用@Qualifier 使其明确使用此服务,但它仍然不起作用。
有人知道这个问题的简单解决方案吗?
【问题讨论】:
标签: spring spring-boot generics kotlin