1

J'ai un fichier application.properties qui contient des propriétés comme ceci:Spring Boot - Apache Commons Configuration - Comment obtenir des propriétés avec le même suffixe

foo.name=Some name 
foo.link=https://www.example.com 
foo.traits=a trait,another one,and another 

... 

bar.name=Another name 
bar.link=https://www.anotherexample.com 
bar.traits=some more traits,and some more,this is getting old 

Comment puis-je obtenir des propriétés qui partagent un similaire suffixe? Par exemple, je veux placer foo.name et bar.name dans une liste/tableau; De même avec les autres propriétés. J'ai vu cela fait avec des propriétés qui partagent un préfixe, mais jamais un suffixe. Est-ce que regex est la meilleure approche? Ou est-ce que cette bibliothèque a une fonction que je n'ai pas trouvée?

Une remarque: cela doit être fait dynamiquement; donc, si quelqu'un devait ajouter une autre propriété, disons blah.name, il serait bourré dans le tableau déjà existant qui contient déjà foo et bar.name.

Merci d'avance.

+0

Ceci fonctionne hors de la boîte avec la botte de ressort. Pas besoin d'une autre bibliothèque. [reference1] (https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-external-config.html), [reference2] (http://www.baeldung.com/configuration-properties-in-spring-boot), [référence3] (https://dzone.com/articles/spring-boot-configurationproperties-1) – Patrick

+0

Spring ne supporte pas SpEL avec '@ConfigurationProperties (prefix = .. .) 'mais avec' @ Value'. Peut-être que "@ Value" avec l'expression et l'injecter dans une carte pourrait faire l'affaire. –

Répondre

1

Je ne pense pas que vous pouvez regrouper les paires clé/valeur de propriété par le "suffixe" de la clé. Je pense que vous devez mettre en œuvre une personnalisation d'un PropertyResolver ou similaire. Où vous souhaitez analyser toutes les propriétés disponibles, sélectionnez celles qui ont le suffixe d'intérêt, chargez les paires clé/valeur intéressantes dans une carte, puis réinjectez une nouvelle propriété Map personnalisée et dynamique dans le Environment

Oui, une regex serait le chemin que je prendrais pour identifier les propriétés candidates. Quelque chose comme ^(.*\.)(.*)=(.*)$ où le groupe 1 est le préfixe de clé de propriété, le groupe 2 est le suffixe d'intérêt, et le groupe 3 est la valeur de la propriété.