@KafkaListener 属性修改
@KafkaListener Attribute Modification
从版本 2.7.2 开始,您现在可以在容器创建之前以编程方式修改注解属性。为此,请将一个或多个 KafkaListenerAnnotationBeanPostProcessor.AnnotationEnhancer 添加到应用程序上下文中。AnnotationEnhancer 是一个 BiFunction<Map<String, Object>, AnnotatedElement, Map<String, Object>,必须返回一个属性的映射。属性值可以包含 SpEL 和/或属性占位符;增强器在执行任何解析之前被调用。如果存在多个增强器,并且它们实现了 Ordered,它们将按顺序被调用。
important
AnnotationEnhancer bean 定义必须声明为 static,因为它们在应用程序上下文生命周期的早期阶段是必需的。
以下是一个示例:
@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;
    };
}