весна: ключ использования карты в выражениях Spel

#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);  }  }  

Обратите внимание, как структурировано имя компонента для свойств.