Ответ 1
PropertySourcesPlaceholderConfigurer
объекты несут ответственность за разрешение аннотаций @Value
против текущей среды Spring и ее набора PropertySources. PropertySourcesPlaceholderConfigurer
класс реализует BeanFactoryPostProcessor
. В жизненном цикле контейнера объект BeanFactoryPostProcessor
должен быть создан ранее, чем объект класса @Configuration
-annotated.
Если у вас есть @Configuration
-annotated класс с методом экземпляра, возвращающим объект PropertySourcesPlaceholderConfigurer
, то контейнер не может создать экземпляр объекта PropertySourcesPlaceholderConfigurer
без создания экземпляра объекта @Configuration
-annotated class. В этом случае @Value
не может быть разрешен, так как объект PropertySourcesPlaceholderConfigurer
не существует в момент создания объекта класса @Configuration
-annotated. Таким образом, поле @Value
-annotated принимает значение по умолчанию, которое равно null
.
Дополнительную информацию см. в разделе "Bootstrapping" @Bean
javadoc.