Programming for fun and profit

Programming tutorials, problems, solutions. Always with code.

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:

public class Config {
    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:

public class Defaults {
    public String getHostname() {
        return "";

Examples of setting default values using @Value:

public class SampleSpringComponent {

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

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

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

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


Host name:  localhost
Directory:  /tmp
SPEL Host name:
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!