SpringBoot не разрешает свойства @Value без аннотации PropertySource - PullRequest
1 голос
/ 22 января 2020

У меня есть куча @Value аннотированных полей в файле конфигурации SpringBoot с соответствующими значениями в стандартном application.properties. Если я не аннотирую файл конфигурации with @PropertySource("classpath:application.properties"), он просто скопирует строку "$ {prop1}" в фактическую переменную.

Я попытался добавить @EnableAutoConfiguration в класс @Configuration (вместо аннотации PropertySource), но все, что он делает, это прерывает работу, когда запрошенное свойство не найдено.

SpringBoot должен разрешить свойства автоматически из стандартного файла application.properties, почему это поведение? Использование версии 2.2.2.RELEASE

Обновление:

Ответы верны, причина, по которой он не работал, заключался в том, что я вызывал эти свойства в тесте. Аннотирование теста с помощью @SpringBootTest устраняет проблему. На самом деле, когда приложение работает, это @SpringBootApplication, который делает волхвы c

1 Ответ

1 голос
/ 22 января 2020

Как вы можете прочитать в этой статье (глава 5) , SpringBoot автоматически управляет файлом application.properties.

Я не знаю, является ли это вашей проблемой, потому что Я не видел код, но в Spring Boot класс Application должен быть помечен @SpringBootApplication.

@SpringBootApplication
public class App {
    public static void main(String[] args) {
        SpringApplication.run(App.class, args);
    }
}

Взгляните на этот стартовый пример .


Затем вы можете ввести значение, например, в класс контроллера следующим образом:

@RestController
public class HelloController {

    @Value("${test}")
    private String test;

    @RequestMapping("/test")
    String hello() {
        return test;
    }

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...