J'essaie de charger un tableau de chaînes à partir du fichier application.yml. Voici la configuration:
ignore:
filenames:
- .DS_Store
- .hg
Voici la classe:
@Value("${ignore.filenames}")
private List<String> igonoredFileNames = new ArrayList<>();
Il existe d'autres configurations de la même classe qui se chargent très bien. Il n'y a pas d'onglets dans mon fichier yaml. J'obtiens toujours l'exception suivante:
Caused by: java.lang.IllegalArgumentException: Could not resolve placeholder 'ignore.filenames' in string value "${ignore.filenames}"
spring-boot
Bahadır Yağan
la source
la source
@Value
(tant qu'un convertisseur est enregistré, ce qu'il sera dans Spring Boot je pense).@Configuration
, mais utiliser à la@Component
place a fait l'affaire.@Component
c'est plus approprié: stackoverflow.com/questions/12229282/…utiliser des valeurs séparées par des virgules dans application.yml
code java pour l'accès
Ça fonctionne ;)
la source
À partir de la documentation de démarrage du printemps https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-external-config.html
Les listes YAML sont représentées comme des clés de propriété avec des déréférenceurs [index], par exemple ce YAML:
Serait transformé en ces propriétés:
Pour lier à des propriétés comme celle en utilisant les utilitaires Spring DataBinder (ce qui est ce qui
@ConfigurationProperties
fait), vous devez avoir une propriété dans le bean cible de typejava.util.List
et vous devez soit fournir un setter, soit l'initialiser avec une valeur mutable, par exemple, cela liera aux propriétés ci-dessus. Voici à quoi ressemblerait le code de la question.la source
getXxx()
est nécessaire pour que cela fonctionne, et doit utiliser unList
, nonSet
.servers: ${my.servers}
:? Pour obtenirmy.servers[0]
etmy.servers[1]
dans le yaml? J'essaie d'avoir des configurations dépendant de la scèneEn plus de la réponse d' Ahmet, vous pouvez ajouter des sauts de ligne à la chaîne séparée par des virgules à l'aide du
>
symbole.application.yml :
Code Java :
la source
La réponse d'Ahmet explique comment attribuer les valeurs séparées par des virgules au tableau String.
Pour utiliser la configuration ci-dessus dans différentes classes, vous devrez peut-être créer des getters / setters pour cela. Mais si vous souhaitez charger cette configuration une fois et continuer à l'utiliser comme un bean avec l'annotation Autowired, voici comment j'ai accompli:
Dans ConfigProvider.java
Dans les cours extérieurs:
vous pouvez utiliser la même liste partout ailleurs en autowiring.
la source
@Configuration
au début du cours dansConfigProvider.java
. Sinon, la source a exigé un bean de type 'java.util.List' qui n'a pas pu être trouvé.fichier yml:
Vous pouvez jouer beaucoup plus avec Spring SpEL.
la source
Eh bien, la seule chose que je peux faire fonctionner est comme ça:
Et n'oubliez pas la @Configuration au-dessus de votre classe ....
Sans la séparation ",", pas de chance ...
Fonctionne aussi (boot 1.5.8 versie)
la source
Dans mon cas, il s'agissait d'un problème de syntaxe dans le fichier .yml. J'ai eu:
et la liste dans mon fichier .yml:
n'a pas lu dans le champ annoté @ Value. Lorsque j'ai changé la syntaxe du fichier .yml en:
cela a bien fonctionné.
la source
fichier yml:
la source