Определить параллельный хэш-код установленного боба? - PullRequest
1 голос
/ 02 апреля 2012

Весной я могу определить HashSet следующим образом:Но есть ли способ сделать это за один шаг в XML?Например, что-то вроде:

 <bean id="subscriberStore" class="java.util.HashSet"/>
         <  Some code here to set subscriberStore to the result 
    of Collections.newSetFromMap(new ConcurrentHashMap<Subscriber, Boolean>?   >

Большое спасибо!

Ответы [ 2 ]

4 голосов
/ 02 апреля 2012

Конфигурация бина:

<!-- The bean to be created via the factory bean -->
<bean id="exampleBean"
      factory-bean="myFactoryBean"
      factory-method="createInstance"/>

<bean id="myFactoryBean" class="com.rory.ConcurrentHashMapFactory"/>

И заводской класс:

public class ConcurrentHashMapFactory {
  public Set<Subscriber> createInstance() {
    Collections.newSetFromMap(new ConcurrentHashMap<Subscriber, Boolean>());
  }
}
0 голосов
/ 02 апреля 2012

Вы можете использовать что-то вроде следующего:

<bean
    id="subscriberStore"
    class="java.util.Collections"
    factory-method="newSetFromMap"
>
    <constructor-arg>
        <bean class="java.util.concurrent.ConcurrentHashMap" />
    </constructor-arg>
</bean>

Однако, если вам важны универсальные типы, создайте нестандартный статический фабричный метод (как подсказывает Борис Павлович в своем ответе ). Возможно, вы захотите взглянуть на эту запись SO для получения некоторой информации, касающейся обобщений и определений bean-компонентов Spring XML.

...