Estou tentando carregar uma matriz de seqüências de caracteres do arquivo application.yml. Esta é a configuração:
ignore:
filenames:
- .DS_Store
- .hg
Esta é a classe:
@Value("${ignore.filenames}")
private List<String> igonoredFileNames = new ArrayList<>();
Existem outras configurações na mesma classe que carregam perfeitamente. Não há guias no meu arquivo yaml. Ainda recebo a seguinte exceção:
Caused by: java.lang.IllegalArgumentException: Could not resolve placeholder 'ignore.filenames' in string value "${ignore.filenames}"
spring-boot
Bahadır Yağan
fonte
fonte
@Value
(desde que um conversor esteja registrado, que será no Spring Boot, eu acho).@Configuration
, mas usar o que@Component
foi feito.@Component
é mais apropriado: stackoverflow.com/questions/12229282/...use valores separados por vírgula em application.yml
código java para acesso
Está funcionando ;)
fonte
Nos documentos de inicialização da primavera, https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-external-config.html
As listas YAML são representadas como chaves de propriedade com desreferencers [index], por exemplo, este YAML:
Seria transformado nessas propriedades:
Para vincular a propriedades como essa usando os utilitários Spring DataBinder (que é o que
@ConfigurationProperties
faz), você precisa ter uma propriedade no bean de destino do tipojava.util.List
e precisa fornecer um setter ou inicializá-lo com um valor mutável, por exemplo, isso será vinculado para as propriedades acima. Aqui está a aparência do código da pergunta.fonte
getXxx()
é necessário que o BTW funcione e deve usar umList
, nãoSet
.servers: ${my.servers}
:? Para entrarmy.servers[0]
emy.servers[1]
entrar no yaml? Estou tentando ter configurações dependentes do estágioAlém da resposta de Ahmet, você pode adicionar quebras de linha à sequência separada por coma usando o
>
símbolo.application.yml :
Código Java :
fonte
A resposta de Ahmet fornece como atribuir os valores separados por vírgula ao array String.
Para usar a configuração acima em diferentes classes, pode ser necessário criar getters / setters para isso. Mas se você deseja carregar essa configuração uma vez e continuar usando-a como um bean com anotação com conexão automática, aqui está como eu realizei:
No ConfigProvider.java
Nas aulas externas:
você pode usar a mesma lista em qualquer outro lugar por ligação automática.
fonte
@Configuration
no início da classe emConfigProvider.java
. Caso contrário, obtive o Source necessário um bean do tipo 'java.util.List' que não pôde ser encontrado.arquivo yml:
Você pode jogar muito mais com o jogo de primavera.
fonte
Bem, a única coisa que posso fazer funcionar é assim:
E não se esqueça da @Configuration acima da sua classe ....
Sem a separação ",", não há tanta sorte ...
Funciona também (boot 1.5.8 versie)
fonte
No meu caso, esse foi um problema de sintaxe no arquivo .yml. Eu tinha:
e a lista no meu arquivo .yml:
não estava lendo no campo anotado @ Value. Quando alterei a sintaxe no arquivo .yml para:
funcionou bem.
fonte
arquivo yml:
fonte