I have a situation where my attempt to use a @Value annotation results in the value being a null.
This is part of a large project and I'm not sure which parts of it are needed. I am using Java anotations (no xml file) and Spring boot.
@Configuration
@EnableAutoConfiguration
@EnableConfigurationProperties
@ComponentScan
public class RESTApplication {
    public static void main(String[] args) {
        SpringApplication.run(RESTApplication.class, args);
    }
}
application.properties contains:
maxuploadfilesize=925000000
I did try to create a PropertySourcesPlaceholderConfigurer as some websites mentioned to do so.
@Configuration
public class AppConfig {
    @Bean
    public static PropertySourcesPlaceholderConfigurer properties() {
        return new PropertySourcesPlaceholderConfigurer();
    }
}
Here is the class attempting to use it:
@Component
public class MyClass {
    @Value("${maxuploadfilesize}")
    String maxFileUploadSize;
    public String getMaxFileUploadSize() {
        return maxFileUploadSize;
    }
    public void setMaxFileUploadSize(String maxFileUploadSize) {
        this.maxFileUploadSize = maxFileUploadSize;
    }
}
However at runtime, maxFileUploadSize is always null. Note the below debug comment where PropertySourcesPropertyResolver seemed to find its correct value within the application.properties file.
2015-06-10 13:50:20.906 DEBUG 21108 --- [           main] o.s.c.e.PropertySourcesPropertyResolver  : Searching for key 'maxuploadfilesize' in [applicationConfig: [classpath:/application.properties]]
2015-06-10 13:50:20.906 DEBUG 21108 --- [           main] o.s.c.e.PropertySourcesPropertyResolver  : Found key 'maxuploadfilesize' in [applicationConfig: [classpath:/application.properties]] with type [String] and value '925000000'
 
                        
It looks like MyClass was not processed as SpringBean, which would mean, that the @Value-annotation was not processed. You could check that with providing a default value, like
@Value("${maxuploadfilesize:'100'}"). If the value is still null, then you know, that MyClass is not instantiated as a SpringBean.Since it is annotated with @Component, you should be able to simply inject it with
@Autowired private MyClass myclass;