У меня есть класс конфигурации, как показано ниже. Все поля во внутреннем классе OptionalServiceConfigs
имеют значение по умолчанию, аннотированное с помощью @Value
, как показано ниже.
Иногда в моем файле application.properties
он не имеет единственного префикса service
. В этом случае мы хотим загрузить экземпляр OptionalServiceConfigs
со значениями его полей по умолчанию.
@Configuration
@ConfigurationProperties(prefix = "myconf")
public class MyConfigs {
// ... rest of my configs
@Value("${service:?????}") // what to put here, or can I?
private OptionalServiceConfigs service; // this is null
// In this class all fields have a default value.
public static class OptionalServiceConfigs {
@Value("${mode:local}")
private String mode;
@Value("${timeout:30000}")
private long timeout;
// ... rest of getter and setters
}
// ... rest of getter and setters
}
Но, к сожалению, поле service
равно null
, когда к нему обращаются, используя его метод получения. Поскольку весенняя загрузка не не инициализирует его экземпляр, если не найдено ключей свойств с префиксом myconf.service.*
в моем файле application.properties
.
Вопрос:
Как сделать поле service
для инициализации новым экземпляром вместе с указанными значениями поля по умолчанию, если в файле свойств нет соответствующих префиксных ключей?
Я не могу представить значение для аннотации @Value("${service:?????}")
для поля service
.
Ничего не работает, пробовал, @Value("${service:}")
или @Value("${service:new")