Не потерпите неудачу, если @Value не указан в свойствах? - PullRequest
0 голосов
/ 01 ноября 2018

Я импортирую зависимость, в которой есть некоторые службы с полями @Value. В моем весеннем загрузочном приложении я не использую эти сервисы, но я все еще использую некоторые другие классы из этой зависимости, теперь, если я запустите свое приложение, оно не сможет разрешить заполнители, например

Причина: java.lang.IllegalArgumentException: не удалось разрешить заполнитель 'apn.authentication.token.teamId' в значении "$ {Apn.authentication.token.teamId}"

Так что, чтобы это исправить, я должен определить значение в моих свойствах. Я искал параметр, позволяющий моему приложению не работать при неизвестных значениях, но я не смог найти способ сделать это.

Можно ли запустить приложение для весенней загрузки, даже если отсутствуют значения? Или я должен исключить классы, которые я не использую (и как, если это единственный вариант)?

Ответы [ 2 ]

0 голосов
/ 01 ноября 2018

Вы можете настроить свой PropertySourcesPlaceholderConfigurer, чтобы он не работал на неизвестных заполнителях:

@Bean
public static PropertySourcesPlaceholderConfigurer propertySourcesPlaceholderConfigurer() {
    PropertySourcesPlaceholderConfigurer propertySourcesPlaceholderConfigurer = new PropertySourcesPlaceholderConfigurer();
    propertySourcesPlaceholderConfigurer.setIgnoreUnresolvablePlaceholders(true);
    return propertySourcesPlaceholderConfigurer;
}

Он не подведет и не потрудится решить его. Как правило, рекомендуется отказывать в неизвестных свойствах (они являются свойствами, поскольку они необходимы для работы вашего приложения) или добавлять их значения по умолчанию. Если у вас есть конфигурация, которая не критична для работы вашего приложения, вы можете создать дополнительный файл конфигурации и прочитать его во время выполнения.

0 голосов
/ 01 ноября 2018

Вы можете установить некоторые значения по умолчанию, чтобы, если значение не представлено, оно приняло значение по умолчанию

@Value("${apn.authentication.token.teamId: -99}")
private int teamId;

или установить значение как ноль

@Value("${apn.authentication.token.teamId: #{null}}")
private Integer teamId;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...