Spring @Value – Import a list from properties file
In this tutorial, we will show you how to import a “List” from a properties file, via Spring EL @Value
Tested with :
- Spring 4.0.6
- JDK 1.7
Spring @Value and List
In Spring @Value
, you can use the split()
method to inject the ‘List” in one line.
config.properties
server.name=hydra,zeus
server.id=100,102,103
AppConfigTest.java
package com.mkyong.analyzer.test;
import java.util.List;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.PropertySource;
import org.springframework.context.support.PropertySourcesPlaceholderConfigurer;
@Configuration
@PropertySource(value="classpath:config.properties")
public class AppConfigTest {
@Value("#{'${server.name}'.split(',')}")
private List<String> servers;
@Value("#{'${server.id}'.split(',')}")
private List<Integer> serverId;
//To resolve ${} in @Value
@Bean
public static PropertySourcesPlaceholderConfigurer propertyConfigInDev() {
return new PropertySourcesPlaceholderConfigurer();
}
}
Output
System.out.println(servers.size());
for(String temp : servers){
System.out.println(temp);
}
System.out.println(serverId.size());
for(Integer temp : serverId){
System.out.println(temp);
}
2
hydra
zeus
3
100
102
103
Also you can use Spring’s ConversionService.
@Bean
public static ConversionService conversionService() {
return new DefaultFormattingConversionService();
}
Good but if the env variable does not exist, it will create a list with “,” as element
Is this possible?
@Value(“#{‘${server.id}’.split(‘,’).trim()}”)
Just wanted to check how can I read a Map declared in application.properties in my java file using Environment variable?
In my application.properties file I have,
myMap={key1:’value1′,key2:’value2′}
In java controller file I have,
import org.springframework.core.env.Environment;
@Autowired
Environment env;
But below gives me error, cannot convert from String to HashMap
HashMap myMap = env.getProperty(“myMap”);
How to resolve this? Any help is appreciated.
Thank you
Thank you for this tuto.It’s helpful
Thank you very much?Simple but useful!
Thank you! . simpler approach in retrieving lists from prop files 🙂
it’s very good article ~~~ thank you
Thank you!