@KafkaListener
Attribute Modification
从 2.7.2 版开始,您现在可以在创建容器之前对注释属性进行编程方式的修改。要这样做,请向应用程序上下文中添加一个或多个 KafkaListenerAnnotationBeanPostProcessor.AnnotationEnhancer
。AnnotationEnhancer
是一个 BiFunction<Map<String, Object>, AnnotatedElement, Map<String, Object>
,它必须返回一个属性映射。属性值可以包括 SpEL 和/或属性占位符;在执行任何解析之前调用增强器。如果有多个增强器,并且它们实现了 Ordered
,那么将按顺序调用它们。
必须在应用程序上下文的生命周期早期声明 AnnotationEnhancer
bean 定义,因为它们非常必要。
下面是一个示例:
@Bean
public static AnnotationEnhancer groupIdEnhancer() {
return (attrs, element) -> {
attrs.put("groupId", attrs.get("id") + "." + (element instanceof Class
? ((Class<?>) element).getSimpleName()
: ((Method) element).getDeclaringClass().getSimpleName()
+ "." + ((Method) element).getName()));
return attrs;
};
}