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:

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!
  • Rakesh C

    I have the default value set as shown below:
    @Value(“${type :NONE}”)
    private String type;

    But, even if I set the value for type in, it shows the default value. what am I missing here?

    Thanks in advance!

    • Rakesh C

      Noticed that a space was present between type and NONE which was creating the problem. Problem resolved!