Resolving consumer beans from CGLIB proxy classes created by @Configuration #596
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
What is the purpose of the change
Originally, when annotating a class with @configuration, it couldn't be resolved as a RocketMQ consumer listener class. I changed the way annotations are parsed, allowing classes marked with @configuration to be correctly identified as RocketMQ consumer listener classes. This is because, in our practice at the company, many people also prefer using @configuration.
Brief changelog
In the postProcessAfterInitialization() method of the RocketMQMessageListenerBeanPostProcessor message listener post-processor, I changed the annotation processing approach to:
RocketMQMessageListener ann = (RocketMQMessageListener) AnnotationUtils.findAnnotation(targetClass, RocketMQMessageListener.class);
This modification allows both @configuration and @service annotated classes to function as consumer listeners.
Verifying this change
In production and actively deployed.
RocketMQMessageListener ann = AnnotationUtils.findAnnotation(targetClass, RocketMQMessageListener.class);