Closed
Description
Grzegorz Poznachowski opened SPR-13803 and commented
I want to wrap @JmsListener
annotation with a custom one (to avoid providing containerFactory attribute):
@Target({ElementType.METHOD, ElementType.ANNOTATION_TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@JmsListener(containerFactory = "customJmsContainerFactory", destination = "")
public @interface CustomJmsListener {
@AliasFor(annotation = JmsListener.class, attribute = "destination")
String destination();
@AliasFor(annotation = JmsListener.class, attribute = "selector")
String selector() default "";
@AliasFor(annotation = JmsListener.class, attribute = "concurrency")
String concurrency() default "";
}
As destination is a required attribute I need to provide its value: destination = ""
. I would expect that it would be overridden by specifying destination attribute on @CustomJmsListener
, however the @JmsListener
value is being used.
Affects: 4.2.3
Issue Links:
- Support repeatable annotations as composed annotations [SPR-13973] #18545 Support repeatable annotations as composed annotations ("depends on")
- Introduce findRepeatableAnnotations() in AnnotationUtils [SPR-13911] #18485 Introduce findRepeatableAnnotations() in AnnotationUtils
- Use AnnotatedElementUtils instead of AnnotationUtils wherever feasible [SPR-13440] #18020 Use AnnotatedElementUtils instead of AnnotationUtils wherever feasible
- @Value cannot be used as aliased meta-annotation [SPR-13603] #18181
@Value
cannot be used as aliased meta-annotation - Support @Cache* as merged composed annotations [SPR-13475] #18054 Support
@Cache
* as merged composed annotations - Support repeatable annotations as composed annotations [SPR-13973] #18545 Support repeatable annotations as composed annotations ("is superseded by")