Spring JavaConfig for java.util.Properties field

inject, java, spring, spring-boot

Solution

The XML base Way:

in spring config:

<util:properties id="myProperties" location="classpath:com/foo/my-production.properties"/>

in your class:

@Autowired
@Qualifier("myProperties")
private Properties myProperties;

JavaConfig Only

It looks like there is an annotation:

@PropertySource("classpath:com/foo/my-production.properties")

Annotating a class with this will load the properties from the file in to the Environment. You then have to autowire the Environment into the class to get the properties.

@Configuration
@PropertySource("classpath:com/foo/my-production.properties")
public class AppConfig {

@Autowired
private Environment env;

public void someMethod() {
    String prop = env.getProperty("my.prop.name");
    ...
}

I do not see a way to directly inject them into the Java.util.properties. But you could create a class that uses this annotation that acts as a wrapper, and builds the properties that way.

Problem

Can you please tell me how to use Spring Javaconfig to directly load/autowire a properties file to a java.util.Properties field? Thanks! Later edit - still searching for the answer: Is it possible to load with Spring JavaConfig a properties file directly into a java.util.Properties field?

Original source