Skip to content

Commit 435fc40

Browse files
authored
Merge pull request #23 from PRIESt512/master
Issue 21 resolving implicit circular dependency
2 parents 993b6dd + 82f9f57 commit 435fc40

4 files changed

Lines changed: 16 additions & 2 deletions

File tree

extensions/src/main/java/org/mapstruct/extensions/spring/converter/ConversionServiceAdapterGenerator.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,7 @@ private static ParameterSpec buildConstructorParameterSpec(final ConversionServi
5656
if (StringUtils.isNotEmpty(descriptor.getConversionServiceBeanName())) {
5757
parameterBuilder.addAnnotation(buildQualifierANnotation(descriptor));
5858
}
59+
parameterBuilder.addAnnotation(buildLazyAnnotation());
5960
return parameterBuilder.build();
6061
}
6162

@@ -66,6 +67,12 @@ private static AnnotationSpec buildQualifierANnotation(ConversionServiceAdapterD
6667
.build();
6768
}
6869

70+
private static AnnotationSpec buildLazyAnnotation() {
71+
return AnnotationSpec
72+
.builder(ClassName.get("org.springframework.context.annotation","Lazy"))
73+
.build();
74+
}
75+
6976
private static String simpleName(final TypeName typeName) {
7077
return rawType(typeName).simpleName();
7178
}

extensions/src/test/java/org/mapstruct/extensions/spring/converter/ConverterMapperProcessorTest.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -99,6 +99,11 @@ static void setupCommonSourceFiles() {
9999
.skipJavaLangImports(true)
100100
.build()
101101
.toJavaFileObject(),
102+
JavaFile.builder(
103+
"org.springframework.context.annotation", buildSimpleAnnotationTypeSpec("Lazy"))
104+
.skipJavaLangImports(true)
105+
.build()
106+
.toJavaFileObject(),
102107
JavaFile.builder(PACKAGE_NAME, buildConfigClass("MyMappingConfig"))
103108
.skipJavaLangImports(true)
104109
.build()

extensions/src/test/resources/ConversionServiceAdapter.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package org.mapstruct.extensions.spring.converter;
22

33
import javax.annotation.Generated;
4+
import org.springframework.context.annotation.Lazy;
45
import org.springframework.core.convert.ConversionService;
56
import org.springframework.stereotype.Component;
67
import test.Car;
@@ -13,7 +14,7 @@
1314
public class ConversionServiceAdapter {
1415
private final ConversionService conversionService;
1516

16-
public ConversionServiceAdapter(final ConversionService conversionService) {
17+
public ConversionServiceAdapter(@Lazy final ConversionService conversionService) {
1718
this.conversionService = conversionService;
1819
}
1920

extensions/src/test/resources/ConversionServiceAdapterCustomBean.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import javax.annotation.Generated;
44
import org.springframework.beans.factory.annotation.Qualifier;
5+
import org.springframework.context.annotation.Lazy;
56
import org.springframework.core.convert.ConversionService;
67
import org.springframework.stereotype.Component;
78
import test.Car;
@@ -15,7 +16,7 @@ public class ConversionServiceAdapter {
1516
private final ConversionService conversionService;
1617

1718
public ConversionServiceAdapter(
18-
@Qualifier("myConversionService") final ConversionService conversionService) {
19+
@Qualifier("myConversionService") @Lazy final ConversionService conversionService) {
1920
this.conversionService = conversionService;
2021
}
2122

0 commit comments

Comments
 (0)