Как создать коллекцию компонентов в конфигурации XML Java в Spring?

Я готовлюсь к сертификации Spring Core, и у меня есть следующие сомнения, связанные с определением коллекции bean-компонентов в конфигурации XML.

Например, у меня есть этот фрагмент конфигурации XML:

<bean id="service" class="com.acme.service.TransferServiceImpl">
    <property name="customerPolicies">
        <list>
            <ref bean="privateBankingCustomerPolicy"/>
            <ref bean="retailBankingCustomerPolicy"/>
            <bean class="com.acme.DefaultCustomerPolicy"/>
        </list>
    </property>
</bean>

Можете ли вы помочь мне понять, как именно работает?

В документации я прочитал, что это называется методом public void setCustomerPolllicies(java.util.List policy)) {...}. Я думаю, что это зависит от того, что должна быть коллекция, инициализированная с помощью объекта bean-компонентов в списке. Это правильно?

Я сомневаюсь: почему объекты в списке имеют другой тип? (ссылка на компонент privateBankingCustomerPolicy, ссылка на компонент retailBankingCustomerPolicy и внутренний компонент, имеющий тип com.acme.DefaultCustomerPolicy)?

Tnx


person AndreaNobili    schedule 21.11.2014    source источник


Ответы (1)


Если сигнатура такая и не используются дженерики, то в этот список можно добавить любой тип.

public void setCustomerPollicies(java.util.List policies)

Если вы хотите ограничить тип во время выполнения, вы должны использовать дженерики

public void setCustomerPollicies(java.util.List<Policy> policies)
person shazin    schedule 21.11.2014
comment
Хорошо, но что происходит на практике? Я устанавливаю список с двумя ссылками (ссылки на privateBankingCustomerPolicy и RetailBankingCustomerPolicy) и на другую ссылку на внутренний компонент (com.acme.DefaultCustomerPolicy)? TNX - person AndreaNobili; 21.11.2014
comment
На практике создается реализация java.util.List, и указанные политики добавляются в этот список, и, наконец, этот список устанавливается для вашего метода. - person shazin; 21.11.2014