Java Programming Tutorials

Java programming tutorials with many code examples!

Spring @Value default value

Spring @Value default value

This tutorial presents how to set default values in Spring @Value annotation, using properties syntax and Spring Expression Language (SPEL).

Spring Config class with static PropertySourcesPlaceholderConfigurer bean that is needed to resolve properties syntax inside @Value:

@Configuration
public class Config {
    @Bean
    public static PropertySourcesPlaceholderConfigurer propertyPlaceholderConfigurer() {
        // Needed by Spring to resolve ${} inside @Value:
        return new PropertySourcesPlaceholderConfigurer();
    }
}

Now a bean with defaults that we can access inside @Value:

@Component("defaults")
public class Defaults {
    public String getHostname() {
        return "default.host";
    }
}

Examples of setting default values using @Value:

@Component
public class SampleSpringComponent {

    @Value("${hostname : localhost}")
    private String hostName;

    @Value("${target.dir : #{systemProperties['java.io.tmpdir']}}")
    private String dir;

    @Value("${hostconfig.hostname : #{@defaults.hostname}}")
    private String spelHostname;

    @Value("#{systemProperties['java.user.home'] ?: '/tmp/default'}")
    private String spelDir;
}

Results:

Host name:  localhost
Directory:  /tmp
SPEL Host name:  default.host
SPEL Directory: /tmp/default

Summary of setting defaults:

  1. Property syntax use: ${expected : default}
  2. SPEL use: #{expected[‘value’] ?: default} (Elvis operator)
  3. SPEL expressions can be mixed with property syntax to access beans in context or use other complex expressions.
Share with the World!