Estou carregando atributos de propriedades de um .properties
arquivo usando Spring da seguinte maneira:
file: elements.properties
base.module.elementToSearch=1
base.module.elementToSearch=2
base.module.elementToSearch=3
base.module.elementToSearch=4
base.module.elementToSearch=5
base.module.elementToSearch=6
O arquivo xml spring
file: myapplication.xml
<bean id="some"
class="com.some.Class">
<property name="property" value="#{base.module.elementToSearch}" />
</bean>
E meu Class.java
file: Class.java
public void setProperty(final List<Integer> elements){
this.elements = elements;
}
Mas, durante a depuração, os elementos de parâmetro só obtêm o último elemento da lista, portanto, há uma lista de um elemento com valor "6", em vez de uma lista com 6 elementos.
Tentei outras abordagens, como adicionar valor apenas, #{base.module}
mas depois não encontrou nenhum parâmetro no arquivo de propriedades.
Uma solução alternativa é ter no arquivo elements.properties uma lista separada por vírgulas, como:
base.module.elementToSearch=1,2,3,4,5,6
e usá-lo como uma string e analisá-lo, mas há uma solução melhor?
java
spring
placeholder
properties-file
RamonBoza
fonte
fonte
Respostas:
Se você definir sua matriz no arquivo de propriedades como:
Você pode carregar tal array em sua classe Java desta forma:
fonte
List<String>
da mesma maneira não parece funcionar (a lista terá apenas um elemento).String[]
como tipo funciona, enquanto usarList<String>
não funciona.List<String>
vez deString[]
, você precisará adicionar pelo menos a<bean id="conversionService" class="org.springframework.context.support.ConversionServiceFactoryBean">
ao seuapplicationContext.xml
. Caso contrário, o serviço de conversão não é usado, mas os editores de propriedade padrão, que não oferecem suporte à conversão de Strings em coleções, apenas arrays: docs.spring.io/spring/docs/current/spring-framework-reference/…E, no caso de você usar um delimitador diferente de vírgula, você também pode usá-lo.
e
nas propriedades do seu aplicativo, você poderia ter
fonte
Aqui está um exemplo de como você pode fazer isso no Spring 4.0+
application.properties
conteúdo:Código Java:
fonte
Com um Spring Boot, pode-se fazer o seguinte:
application.properties
Classe de configuração
Isso é necessário, sem essa aula ou sem a
values
aula não está funcionando.Classe Spring Boot Application
fonte
Se você precisa passar o símbolo de asterisco, você deve colocá-lo entre aspas.
No meu caso, preciso configurar cors para websockets. Então, decidi colocar urls de cors em application.yml. Para env de prod, usarei urls específicas, mas para dev, pode usar apenas *.
No arquivo yml eu tenho:
Na classe de configuração, tenho:
fonte