Search code examples
javapropertiesspring-boot

How to read data from java properties file using Spring Boot


I have a spring boot application and I want to read some variable from my application.properties file. In fact below codes do that. But I think there is a good method for this alternative.

Properties prop = new Properties();
InputStream input = null;

try {
    input = new FileInputStream("config.properties");
    prop.load(input);
    gMapReportUrl = prop.getProperty("gMapReportUrl");
} catch (IOException ex) {
    ex.printStackTrace();
} finally {
    ...
}

Solution

  • You can use @PropertySource to externalize your configuration to a properties file. There is number of way to do get properties:

    1. Assign the property values to fields by using @Value with PropertySourcesPlaceholderConfigurer to resolve ${} in @Value:

    @Configuration
    @PropertySource("file:config.properties")
    public class ApplicationConfiguration {
    
        @Value("${gMapReportUrl}")
        private String gMapReportUrl;
    
        @Bean
        public static PropertySourcesPlaceholderConfigurer propertyConfigInDev() {
            return new PropertySourcesPlaceholderConfigurer();
        }
    
    }
    

    2. Get the property values by using Environment:

    @Configuration
    @PropertySource("file:config.properties")
    public class ApplicationConfiguration {
    
        @Autowired
        private Environment env;
    
        public void foo() {
            env.getProperty("gMapReportUrl");
        }
    
    }
    

    Hope this can help