@KafkaListener
屬性修改
從版本 2.7.2 開始,現在可以在建立容器之前以程式設計方式修改註解屬性。為此,可以將一個或多個 KafkaListenerAnnotationBeanPostProcessor.AnnotationEnhancer
新增到應用上下文中。AnnotationEnhancer
是一個 BiFunction<Map<String, Object>, AnnotatedElement, Map<String, Object>
,必須返回一個屬性對映。屬性值可以包含 SpEL 和/或屬性佔位符;增強器會在任何解析執行之前被呼叫。如果存在多個增強器並且它們實現了 Ordered
介面,則會按順序呼叫它們。
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;
};
}