diff --git a/core-common/src/main/java/org/mapstruct/DecoratedWith.java b/core-common/src/main/java/org/mapstruct/DecoratedWith.java
index c3b3d191a..095fdccf8 100644
--- a/core-common/src/main/java/org/mapstruct/DecoratedWith.java
+++ b/core-common/src/main/java/org/mapstruct/DecoratedWith.java
@@ -123,9 +123,9 @@ import java.lang.annotation.Target;
*
* JSR 330 doesn't specify qualifiers and only allows to specifically name the beans. Hence, the generated
* implementation of the original mapper is annotated with {@code @Named("fully-qualified-name-of-generated-impl")}
- * (please note that when using a decorator, the class name of the mapper implementation ends with an underscore). To
- * inject that bean in your decorator, add the same annotation to the delegate field (e.g. by copy/pasting it from the
- * generated class):
+ * and {@code @Singleton} (please note that when using a decorator, the class name of the mapper implementation ends
+ * with an underscore). To inject that bean in your decorator, add the same annotation to the delegate field (e.g. by
+ * copy/pasting it from the generated class):
*
*
* public abstract class PersonMapperDecorator implements PersonMapper {
diff --git a/core-common/src/main/java/org/mapstruct/Mapper.java b/core-common/src/main/java/org/mapstruct/Mapper.java
index 4406e72d3..6428cb114 100644
--- a/core-common/src/main/java/org/mapstruct/Mapper.java
+++ b/core-common/src/main/java/org/mapstruct/Mapper.java
@@ -75,7 +75,7 @@ public @interface Mapper {
* can be retrieved via {@code @Autowired}
*
* {@code jsr330}: the generated mapper is annotated with {@code @Named} and
- * can be retrieved via {@code @Inject}
+ * {@code @Singleton}, and can be retrieved via {@code @Inject}
*
* The method overrides an unmappedTargetPolicy set in a central configuration set
* by {@link #config() }
diff --git a/core-common/src/main/java/org/mapstruct/MapperConfig.java b/core-common/src/main/java/org/mapstruct/MapperConfig.java
index 183ba25d4..d6a2ad243 100644
--- a/core-common/src/main/java/org/mapstruct/MapperConfig.java
+++ b/core-common/src/main/java/org/mapstruct/MapperConfig.java
@@ -77,7 +77,7 @@ public @interface MapperConfig {
* can be retrieved via {@code @Autowired}
*
* {@code jsr330}: the generated mapper is annotated with {@code @Named} and
- * can be retrieved via {@code @Inject}
+ * {@code @Singleton}, and can be retrieved via {@code @Inject}
*
*
* @return The component model for the generated mapper.
diff --git a/integrationtest/src/test/resources/jsr330Test/src/main/java/org/mapstruct/itest/jsr330/other/DateMapper.java b/integrationtest/src/test/resources/jsr330Test/src/main/java/org/mapstruct/itest/jsr330/other/DateMapper.java
index 683b708c1..895aa4c41 100644
--- a/integrationtest/src/test/resources/jsr330Test/src/main/java/org/mapstruct/itest/jsr330/other/DateMapper.java
+++ b/integrationtest/src/test/resources/jsr330Test/src/main/java/org/mapstruct/itest/jsr330/other/DateMapper.java
@@ -23,7 +23,9 @@ import java.text.SimpleDateFormat;
import java.util.Date;
import javax.inject.Named;
+import javax.inject.Singleton;
+@Singleton
@Named
public class DateMapper {
diff --git a/processor/src/main/java/org/mapstruct/ap/internal/processor/Jsr330ComponentProcessor.java b/processor/src/main/java/org/mapstruct/ap/internal/processor/Jsr330ComponentProcessor.java
index 75315f625..05b8020aa 100644
--- a/processor/src/main/java/org/mapstruct/ap/internal/processor/Jsr330ComponentProcessor.java
+++ b/processor/src/main/java/org/mapstruct/ap/internal/processor/Jsr330ComponentProcessor.java
@@ -42,16 +42,16 @@ public class Jsr330ComponentProcessor extends AnnotationBasedComponentModelProce
@Override
protected List getTypeAnnotations(Mapper mapper) {
if ( mapper.getDecorator() == null ) {
- return Collections.singletonList( named() );
+ return Arrays.asList( singleton(), named() );
}
else {
- return Collections.singletonList( namedDelegate( mapper ) );
+ return Arrays.asList( singleton(), namedDelegate( mapper ) );
}
}
@Override
protected List getDecoratorAnnotations() {
- return Collections.singletonList( named() );
+ return Arrays.asList( singleton(), named() );
}
@Override
@@ -69,6 +69,10 @@ public class Jsr330ComponentProcessor extends AnnotationBasedComponentModelProce
return true;
}
+ private Annotation singleton() {
+ return new Annotation( getTypeFactory().getType( "javax.inject.Singleton" ) );
+ }
+
private Annotation named() {
return new Annotation( getTypeFactory().getType( "javax.inject.Named" ) );
}