【发布时间】:2022-01-16 23:00:15
【问题描述】:
这些是我的相关课程:
public abstract class Element {
private List<Extension> extension;
}
public abstract class Type extends Element {
}
public abstract class PrimitiveType<T> extends Type {
private T value;
}
public class UriType extends PrimitiveType<String> {
}
public class Extension extends Type {
private UriType url;
}
如你所见:
< PrimitiveType < UriType
Element (*extension: List<Extension>) < Type
< Extension (*url: UriType)
我在启动 Spring Boot 服务时收到此消息:
***************************
APPLICATION FAILED TO START
***************************
Description:
The dependencies of some of the beans in the application context form a cycle:
ca.uhn.fhir.spring.boot.autoconfigure.FhirAutoConfiguration$FhirRestfulServerConfiguration
↓
patientResourceProvider defined in file [/home/jeusdi/projects/salut/mpi/hes-mpi-fhir-mongodb/target/classes/cat/gencat/catsalut/hes/mpi/providers/PatientResourceProvider.class]
↓
patientService defined in file [/home/jeusdi/projects/salut/mpi/hes-mpi-fhir-mongodb/target/classes/cat/gencat/catsalut/hes/mpi/service/PatientService.class]
↓
patientMapperImpl defined in file [/home/jeusdi/projects/salut/mpi/hes-mpi-fhir-mongodb/target/classes/cat/gencat/catsalut/hes/mpi/mapper/PatientMapperImpl.class]
┌─────┐
| extensionMapperImpl defined in file [/home/jeusdi/projects/salut/mpi/hes-mpi-fhir-mongodb/target/classes/cat/gencat/catsalut/hes/mpi/mapper/ExtensionMapperImpl.class]
↑ ↓
| uriTypeMapperImpl defined in file [/home/jeusdi/projects/salut/mpi/hes-mpi-fhir-mongodb/target/classes/cat/gencat/catsalut/hes/mpi/mapper/UriTypeMapperImpl.class]
UriTypeMapper 和 ExtensionMapper 具有循环依赖关系。
问题是Extension 类有一个url: UriType 和UriType 继承自包含Element 的List<Extension>:
ExtensionMapper 是:
@Mapper(
uses = {
UriTypeMapper.class
}
)
public interface ExtensionMapper {
@Mapping(target = "url", source = "urlElement")
Extension fhirToMpi(org.hl7.fhir.r4.model.Extension fhirType);
}
而UriTypeMapper 是:
@Mapper(
config = GenericMapperConfig.class,
uses = { ExtensionMapper.class }
)
public interface UriTypeMapper {
UriType fhirToMpi(org.hl7.fhir.r4.model.UriType uriType);
}
我不太清楚如何避免这种行为,因为Extension 需要一个UriTypeMapper 来映射Extension.url 字段,而UriType 需要ExtensionMapper 因为它从@987654341 继承extension 字段@类。
关于如何安排它的任何想法?
【问题讨论】:
标签: mapstruct