Springを使用してMultimap<String, String>
を作成する例を提供できますか?Springを使用してGoogle Guava Hashmultimapを挿入する
アプリケーションコンテキストXMLファイルでどのように処理されるのか不思議です。
Springを使用してMultimap<String, String>
を作成する例を提供できますか?Springを使用してGoogle Guava Hashmultimapを挿入する
アプリケーションコンテキストXMLファイルでどのように処理されるのか不思議です。
Google Collectionsの代わりにGuavaが推奨されていますので、私はグアバについてお答えします。
私は、このBeanクラスを使用します。
public class Bean{
private Multimap<String, String> map;
public void setMap(Multimap<String, String> map){
this.map = map;
}
}
あなたは簡単に(のみXMLに)配線することができのみグアバMultimapはファクトリメソッドはMultimaps.forMap(existingMap)
方法です。ここではXMLです:
<bean class="foo.bar.Bean">
<property name="map">
<bean class="com.google.common.collect.Multimaps"
factory-method="forMap">
<constructor-arg>
<bean class="java.util.HashMap" />
</constructor-arg>
</bean>
</property>
</bean>
あなたはMultimaps
クラスで、より複雑なSupplier
ベースの方法のいずれかをしたい場合、あなたはJavaクラスとしてサプライヤーを作成する必要があります。
public class SupplierFactoryBean<T> extends AbstractFactoryBean<Supplier<T>>{
private final Class<T> type;
private final Supplier<T> supplier;
public SupplierFactoryBean(final Class<T> type){
this.type = type;
this.supplier = new Supplier<T>(){
@Override
public T get(){
try{
return type.newInstance();
} catch(final Exception e){
throw new IllegalStateException(e);
}
}
};
}
@Override
public Class<?> getObjectType(){ return type; }
@Override
protected Supplier<T> createInstance() throws Exception{
return supplier;
}
}
(あなたはまた、FactoryBeanのなしサプライヤークラス上記のようにモデル化することができる、春の使用量は同じまま念:あなただけSupplier
をインスタンス化プリミティブをしたい場合は、春FactoryBean
とすることを作成することができます)すべての呼び出しに対して新しいインスタンスが返されます。
これで、より複雑なメソッドを配線できます。例:
<bean class="foo.bar.Bean">
<property name="map">
<bean class="com.google.common.collect.Multimaps"
factory-method="newSetMultimap">
<constructor-arg>
<bean class="java.util.HashMap" />
</constructor-arg>
<constructor-arg>
<bean class="foo.bar.SupplierFactoryBean">
<constructor-arg value="java.util.TreeSet" />
</bean>
</constructor-arg>
</bean>
</property>
</bean>
使用静的ファクトリメソッド上記の両方の例。 3.3.2.2 Instantiation with a static factory method
'Multimap'クラスはjavabeanに準拠していないので、簡単ではありません。あなたは何ができるのですか? – skaffman