В моем проекте у меня много компонентов с пружинным управлением, которые примерно одинаковы.Я хочу создать общий класс 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 также должен слушать темы Кафки.В настоящее время каждый компонент имеет прослушиватель, настроенный так:
@KafkaListener(topics = "${FOO"_TOPIC:foo2}", containerFactory = "kafkaListenerContainerFactory")
private void fooListener(ConsumerRecord<String, Foo> rec) {
// Stuff...
}
Я хочу переместить слушателя kafka в FooUtil.Как я могу это сделать? Чтобы было ясно, я хочу, чтобы FooUtil начал слушать, как только он был создан и инициализирован компонентом.