在我的项目中,我有很多弹簧管理的组件做同样的事情。我想创建一个通用的 Util 类,为我的所有组件执行所有通用操作。由于这个 Util 类需要访问环境变量和 bean,它的实例化如下:
// Util class:
public class FooUtil {
public FooUtil(Environment env) {
env.getProperty("FOO_TOPIC", "foo")
}
}
// Example configuration for one of my components:
@Configuration
public class ComponentConfig {
@Bean
FooUtil fooUtil(Environment env) {
return new FooUtil(env);
}
}
这允许 FooUtil 访问所有环境变量和 bean,而无需它本身就是一个组件。
现在,这个Util类也需要听kafka的话题。每个组件当前都有一个侦听器,如下所示:
@KafkaListener(topics = "${FOO"_TOPIC:foo2}", containerFactory = "kafkaListenerContainerFactory")
private void fooListener(ConsumerRecord<String, Foo> rec) {
// Stuff...
}
我想把这个 kafka 监听器移到 FooUtil 中。我怎样才能做到这一点?需要明确的是,我希望 FooUtil 在它被组件实例化和初始化后立即开始监听。
SMILET
慕的地10843
相关分类