Sidenote сначала:
Пружинная загрузка может считывать application.properties
автоматически, только если она помещена в
src/main/resources
src/main/resources/config
папка
Убедитесь, что он действительно там.
Теперь реальная проблема:
Вы пытаетесь получить доступ к свойству внутри конструктора , а пружина работает не так:
Spring сначала создает объект (вызывая его конструктор), и только после этого вводит его поля.
Таким образом, у вас есть два способа:
Опция 1:
Используйте конструктор Injection для ваших bean-компонентов (я вижу, что вы используете @Configuration
, но этот совет больше подходит для настоящих bean-компонентов, в нем больше смысла):
@Component
class MyClass {
public MyClass(@Value({"db.name"} String dbName) {
....
}
}
Вариант 2:
Проверьте не в конструкторе, а в постконструкции или если вы говорите о конфигурациях в @Bean
аннотированных методах:
@Configuration
public class MyConfig {
@Value("${db.name}")
private String dbName;
@Bean
public SomeBean someBean() {
// here dbName should be accessible
return new SomeBean (dbName)
}
// alternatively you can inject dbName like this:
@Bean
public SomeOtherBean someOtherBean(@Value("${db.name}") String dbName) {
return new SomeOtherBean(dbName);
}
}