Обновлен:
Получив обновленную информацию и свой собственный ответ , я удалил всю информацию из источника данных, так как совершенно уверен, что ваша проблема связана с элементом <context:property-placeholder />
.
Ваше сообщение об ошибке из вашего ответа , которое, по моему мнению, является корнем проблемы:
вызвано:
java.lang.NumberFormatException: для
входная строка: "$ {minIdle}"
Я считаю, что проблема в том, что PropertyPlaceholderConfigurer
не инициализирован. Если вы сконфигурируете это с помощью элемента <context:property-placeholder />
, все заполнители будут заменены соответствующими значениями из файла свойств в операции постобработки в конце процесса инициализации и до того, как контейнер Spring будет в рабочей фазе.
Если это была ошибка синтаксического анализа, а файл свойств содержал такую строку:
minIdle=demo string
Тогда в сообщении об ошибке будет использоваться "demo string"
вместо "${minIdle}"
Когда дело доходит до синтаксического анализа, Spring выполнит для вас анализ с помощью аннотации @Value
, и ваше поле minIdle
отлично работает на моем компьютере:
@Value("${minIdle}")
private int minIdle;
Единственный способ, которым мне удалось получить ваше сообщение об исключении, - это если я забыл добавить
<context:property-placeholder />
элемент. Затем я получил то же сообщение об исключении с последним свойством, доступным в сообщении об ошибке.
Демонстрационное приложение
Небольшой эксперимент, имитирующий вашу проблему:
@Value("${a}")
private String a;
@Value("${b}")
private Integer b;
@Bean
public String demo() {
System.out.println("a: " + a);
System.out.println("b: " + b);
return a + ", " + b;
}
Без элемента property-placeholder
:
Вызвано:
java.lang.NumberFormatException: для
входная строка: "$ {b}"
С property-placeholder
он работает как ожидалось.