Как получить заданные элементы в той же последовательности, что и в определении bean-компонента Spring - PullRequest
0 голосов
/ 15 февраля 2019

У меня есть много определений bean-компонентов, которые выглядят примерно так:

        <bean id="TransformationMapOrganization " class="com.artifact_software.adt.plugin.transformation.RemoveColumnsTransformationImpl">
                <property name="pluginId" value="Remove Division, Department, and Cost Code" />
                <property name="dataStoreName" value="person_data"/>
                <property name="columnNames">
                    <set>
                        <value>Division</value>
                        <value>Dept Code</value>
                        <value>Cost Code</value>
                    </set>
                </property>
            </bean>

В коде columnNames определены как:

protected List<String> columnNames;

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

  1. Какую реализацию набора будет использовать Spring?

  2. Что является правильнымспособ перебрать columnNames, чтобы получить columnNames в той же последовательности, в которой они указаны в bean-компоненте?

Ответы [ 2 ]

0 голосов
/ 15 февраля 2019
  1. Вы можете установить класс реализации с помощью <set set-class="com.my.SetImpl" />, ( см. Текущий документ ).(com.my.SetImpl должен реализовывать java.util.Set)

    • в качестве альтернативы: определить targetClass для вашего SetFactoryBean ...
    • Если опустить, текущая пружина , будет использовать java.util.LinkedHashSet.
  2. Более правильно, надежно и безопасно для будущего было бы сопоставить columnNames как java.util.Set не как List (+ для использования set-class).

    Если атрибут set-class не указан, контейнер выбирает реализацию Set.


(в вашем случае,) Spring, очевидно, преобразует из набора в список «плавно» («вручную», это также легко сделать, благодаря дизайну API),Spring (кажется) также сохраняет вам отдельных записей, LinkedHashSet реализация дополнительно гарантирует / должна "сохранять порядок" ...

0 голосов
/ 15 февраля 2019

Ваше определение Бина и имена полей различны.Измените

<property name="ColumnNames">

на

<property name="columnNames">
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...