java – 使用Spring注入Google Guava Hashmultimap
发布时间:2020-12-15 08:37:31 所属栏目:Java 来源:网络整理
导读:是否可以提供创建Multimap String,String的示例.用 Spring? 我很想知道如何在应用程序上下文XML文件中完成它. 解决方法 Google Collections被弃用赞成 Guava,所以我将回答关于番石榴的问题. 我将使用这个Bean类: public class Bean{ private MultimapStrin
是否可以提供创建Multimap< String,String>的示例.用
Spring?
我很想知道如何在应用程序上下文XML文件中完成它. 解决方法
Google Collections被弃用赞成
Guava,所以我将回答关于番石榴的问题.
我将使用这个Bean类: public class Bean{ private Multimap<String,String> map; public void setMap(Multimap<String,String> map){ this.map = map; } } 您可以轻松连接(仅使用XML)的唯一Guava Multimap工厂方法是 <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> 如果您想要 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类,Spring的用法保持不变.只需确保它为每次调用返回一个新实例.) 现在您可以连接更复杂的方法.例: <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> 以上两个示例都使用静态工厂方法.这是Spring Reference:3.3.2.2 Instantiation with a static factory method中的相应章节 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |