I am starting to learn Spring annotations. I'm currently using the @PropertySource annotation in my Configuration Class to resolve properties values and everything works fine, but then I read about PropertySourcesPlaceholderConfigurer.
When or why I should use that?
From @PropertySource javadoc
...
Note, however, that explicit registration of aPropertySourcesPlaceholderConfigurervia a static@Beanmethod is typically only required if you need to customize configuration such as the placeholder syntax, etc. See the "Working with externalized values" section of Configuration@Configuration's javadocs and "a note on BeanFactoryPostProcessor-returning @Bean methods of Bean@Bean's javadocs for details and examples. Specifically, if no bean post-processor (such as aPropertySourcesPlaceholderConfigurer) has registered an embedded value resolver for theApplicationContext, Spring will register a default embedded value resolver which resolves placeholders against property sources registered in theEnvironment.
...
Well, in simple words if you need to set up or get more control over a property configuration bean such as PropertySourcesPlaceholderConfigurer you could define it. Otherwise, it can be ommited.But if you use a version of Spring prior 4.3.0, this bean has to be declared for resolve @Value.
To get more details:
(I hope it'll help you a little)