#java #spring #spring-kafka #spring-el
Вопрос:
Я хочу использовать свои свойства в выражении spel, например, в описании слушателя Кафки
@KafkaListener(topics = "#{'${mymap.keys}'}", containerFactory = "kafkaListenerContainerFactory", autoStartup = "${kafka.enable}", concurrency = "1")
Вот мое заявление.yaml
mymap: { "key1": "value1", "key2": "value1", }
Можно ли использовать ключ с моей карты из файла yaml? Я пробовал много подобных способов использования ключей с моей карты, но все они не работают
Ответ №1:
Это работает:
myprops: mymap: key1: value1 key2: value1
@ConfigurationProperties(prefix = "myprops") public class Props { private final Maplt;String, Stringgt; mymap; public Props(Maplt;String, Stringgt; mymap) { this.mymap = mymap; } public Maplt;String, Stringgt; getMymap() { return this.mymap; } }
@SpringBootApplication @EnableConfigurationProperties(Props.class) public class So69705322Application { public static void main(String[] args) { SpringApplication.run(So69705322Application.class, args); } @KafkaListener(id = "so69705322", topics = "#{@'myprops-com.example.demo.Props'.mymap.keySet.toArray(new String[0])}") void listen(String in) { System.out.println(in); } }
Обратите внимание, как структурировано имя компонента для свойств.