2017-02-21 9 views
0

Мне нужно загрузить java.util.List<Integer> из файла свойств, который содержит целые числа, разделенные запятой.Как загрузить список чисел из файла свойств пружины

ids = 1230, 34, 2587, 31 

До сих пор я попробовал identifiers.properties файл с выше содержание и загрузка его в бобе с пружинной XML файл:

<bean id="identifiersList" class="MyIdHolderClass"> 
     <property name="idsList" value="${ids}"/> 
    </bean> 

Но я получаю сообщение об ошибке, потому что java.util.List<Integer> ids не может хранить String - вот что Spring пытается вставить в нее.

Есть ли способ весеннего ввода списка чисел из файла свойств?

Только для контекста: чего я пытаюсь достичь, является загрузка Map<Integer, Float> из файла свойств. Но, не загрузив его, я решил разбить его на загрузку ключей и загрузку значений. (Это будет отображаться как карта, которая сообщает цену для каждого идентификатора продукта).

+0

Почему '.properties' файл, а не то, что больше подходит для хранения данных, массив/список, как JSON или XML? – Thomas

+0

@Thomas Это также перешло мне на ум, но формат свойств легче достичь, экспортируя данные из внешних источников. Чтобы получить работу .xml, потребуется большое редактирование, чтобы добавить все теги на место. Если у вас нет хорошего предложения ... – manuelvigarcia

+0

Это действительно разрешено в предлагаемом вопросе. – manuelvigarcia

ответ

1

Попробуйте добавить этот компонент в вашей конфигурации:

@Bean 
public ConversionService conversionService() { 
    return new DefaultConversionService(); 
} 

Это добавит поддержку для преобразования строки в коллекции:

Обратите внимание, что DefaultConversionService автоматически регистрирует преобразователи, которые подходят для большинства сред. Это включает в себя конвертеры коллекции, скалярные преобразователи, а также базовые преобразователи Object to String. Одни и те же конвертеры могут быть зарегистрированы любым конвертером, используя статический метод AddDefaultConverters в классе DefaultConversionService.

Ссылка: https://docs.spring.io/spring/docs/current/spring-framework-reference/html/validation.html

+0

Этот ответ - более подробно описан в [предлагаемом вопросе] (http://stackoverflow.com/a/29970335/5108777) - это тот, с которым я закончил. Очень удобно освободиться от разделения струны и преобразования токенов в 'Float'. – manuelvigarcia

0

Я думаю, вы должны придать свойства, как это:

<bean id="identifiersList" class="MyIdHolderClass"> 
    <property name="idsList" value="#{'${ids}'.split(',')}"/> 
</bean> 
Смежные вопросы