Я не уверен, что это ошибка. Фактически это может быть ожидаемое поведение.
Предположим, у меня есть следующий класс конфигурации
@ConfigurationProperties("app")
public class ApplicationConfiguration {
public String uri = "/api/v1";
// I also tested with optional, no difference
// public Optional<String> uri = Optional.of("/api/v1");
}
и я использую аннотацию @Controller("${app.uri}/some/path")
на контроллере.
Если я не добавлю запись в application.yml
, я получаю следующую ошибку:
Could not resolve placeholder ${app.uri} in value: ${app.uri}/some/path
Хотя, если я добавлю следующие строки в мой application.yml
app:
uri: /api/v2
Тогда все работает: заполнитель разрешается в /api/v2
, а также значение в вводимом объекте конфигурации устанавливается в /api/v2
вместо значения по умолчанию /api/v1
.
Я ожидал бы, что если я не установлю значение в application.yml
, значение по умолчанию в классе будет разрешено (/api/v1
).
Опять же, это может быть просто задумано, и это нормально. Мне просто интересно, делаю ли я что-то не так и, в этом случае, как исправить.