Spring: PropertyPlaceHolderConfigurer для установки значений для нестроковых / целочисленных свойств - PullRequest
1 голос
/ 01 марта 2010

Все примеры, которые я видел, где используется PropertyPlaceHolderConfigurer, устанавливают простые значения, такие как Strings и ints.

Как вы используете PPC для установки значений классов.

например. Если бы у меня была подпись класса Source(String name, DistributionSample batch, DistributionSample delay)

Как мне настроить параметры пакетной обработки и задержки.

Есть также маленький улов. DistributionSample - это абстрактный класс. С другой стороны, классу, который использует propertyPlaceHolder, известно имя beanName класса «Solid», для которого необходимо создать экземпляр.

Любая помощь будет высоко ценится.

Ответы [ 3 ]

0 голосов
/ 02 марта 2010

Посмотрите на PropertyOverrideConfigurer, когда вы хотите переопределить свойства конкретных bean-компонентов, сборка которых вы не можете контролировать.

0 голосов
/ 14 марта 2010

В конце концов, было больше смысла использовать Castor для сопоставления XML с java-объектами.

Castor интегрируется с пружиной, поэтому бобы могут быть получены из маршаллеров Castor.

Спасибо за все советы и подсказки, ребята.

0 голосов
/ 02 марта 2010

Как вы сказали, PropertyPlaceHolderConfigurer работает только для значений String, которые String может преобразовать в целевой тип.

Таким образом, вы можете либо сказать Spring, как преобразовать строку в DistributionSample объекты, либо использовать заполнители свойств для ссылки на имена бинов, например,

<bean class="Source">
   <constructor-arg value="source name"/>
   <constructor-arg ref="${batch.beanName}"/>
   <constructor-arg ref="${delay.beanName}"/>
</bean>

<bean id="batch" class="....."/>
<bean id="delay" class="....."/>

Если ваш файл свойств содержит

batch.beanName = batch
delay.beanName = delay

Тогда ссылки на компоненты будут разрешены. Вы также можете использовать синтаксис заполнителя свойства для классов бинов, если это полезно для вас:

<bean id="sample" class="${batch.classname}/>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...