|
对于最新稳定版本,请使用Spring for Apache Kafka 4.0.4! |
@KafkaListener 属性修改
从 2.7.2 版本开始,您可以在容器创建之前程序化地修改注解属性。
为此,请向应用上下文添加一个或多个 KafkaListenerAnnotationBeanPostProcessor.AnnotationEnhancer。
AnnotationEnhancer 是一个 BiFunction<Map<String, Object>, AnnotatedElement, Map<String, Object>,必须返回属性的映射。
属性值可以包含 SpEL 和/或属性占位符;增强器在任何解析之前被调用。
如果存在多个增强器并且实现了 Ordered,它们将按顺序被调用。
AnnotationEnhancer 需要声明 static 个 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;
};
}