Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >使用Spring注入Google Guava Hashmultimap

使用Spring注入Google Guava Hashmultimap
EN

Stack Overflow用户
提问于 2011-01-07 05:41:35
回答 1查看 3.1K关注 0票数 3

可以提供一个使用Spring创建Multimap<String, String>的示例吗?

我很好奇如何在应用程序上下文XML文件中完成此操作。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-01-07 13:24:12

支持Guava而不推荐使用Google Collections,所以我将回答有关Guava的问题。

我将使用这个Bean类:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public class Bean{
    private Multimap<String, String> map;
    public void setMap(Multimap<String, String> map){
        this.map = map;
    }
}

惟一可以轻松连接(仅使用XML )的Guava Multimap工厂方法是Multimaps.forMap(existingMap)方法。下面是XML:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<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-based方法,则必须将Supplier创建为Multimaps类。如果您只需要一个原语实例化Supplier,那么您可以将其创建为一个Spring FactoryBean

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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的用法保持不变。只要确保每次调用都返回一个新实例即可。)

现在,您可以连接更复杂的方法。示例:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<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中的相应章节:

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4622821

复制
相关文章
避免在 JS 中过多使用 IF 语句优化技巧
最近在重构代码时,我发现早期的代码使用太多的 if 语句,其程度是我从未见过的。这就是为什么我认为分享这些简单的技巧是非常重要的,这些技巧可以帮助我们避免过多的使用 if 语句。
前端小智@大迁世界
2020/10/26
2.3K0
C++核心准则ES.86:避免在基本for循环的循环体中修改循环控制变量​
ES.86: Avoid modifying loop control variables inside the body of raw for-loops
面向对象思考
2020/06/11
1.8K0
[译] 在 JavaScript 中通过 queueMicrotask() 使用微任务
原文:https://developer.mozilla.org/en-US/docs/Web/API/HTMLDOMAPI/Microtask_guide
江米小枣
2020/06/15
3.2K0
python product避免多重循环
通过 from itertools import product 避免多重循环,提高可读性
葫芦
2019/05/14
1.3K0
HTML5中类jQuery选择器querySelector的使用
简介 HTML5向Web API新引入了document.querySelector以及document.querySelectorAll两个方法用来更方便地从DOM选取元素,功能类似于jQuery的选择器。这使得在编写原生JavaScript代码时方便了许多。 用法 两个方法使用差不多的语法,都是接收一个字符串参数,这个参数需要是合法的CSS选择语法。 element = document.querySelector('selectors');elementList = document.querySel
前朝楚水
2018/04/02
3.4K0
HTML5中类jQuery选择器querySelector的使用
pivottablejs|在Jupyter中尽情使用数据透视表!
大家好,在之前的很多介绍pandas与Excel的文章中,我们说过「数据透视表」是Excel完胜pandas的一项功能。
刘早起
2020/10/23
3.8K0
pivottablejs|在Jupyter中尽情使用数据透视表!
避免在Swift中使用单例
"我知道单例是不好的,但是......",这是开发人员在讨论代码时经常说的话。社区里似乎有一个共识,那就是单例是 "不好的",但同时苹果和第三方的Swift开发者都在应用内部和共享框架中不断使用它们。
韦弦zhy
2022/03/30
5110
在nodejs中事件循环分析
在上一篇文章在chromev8中的JavaScript事件循环分析中分析到,在chrome中的js引擎是通过执行栈和事件队列的形式来完成js的异步操作。然而在node中,事件循环表现出的状态与浏览器中大致相同。不同的是node中有一套自己的模型。node中事件循环的实现是依靠的libuv引擎。我们知道node选择chrome v8引擎作为js解释器,v8引擎将js代码分析后去调用对应的node api,而这些api最后则由libuv引擎驱动,执行对应的任务,并把不同的事件放在不同的队列中等待主线程执行。 因此实际上node中的事件循环存在于libuv引擎中。
Yerik
2022/04/11
4K0
querySelector与querySelectorAll
HTML5学堂:JS获取节点的方法很多,但真正常用的或许就是通过id和标签获取节点,用传统的几种方法想要快速的查找到某个标签,就意味着需要更多的id,命名多了自然就烦了,接下来给大家介绍的方法就能简化很多操作。 常用的获取节点的方法 JS中经常需要获取节点,下面四种是较为常见的。 1、通过id获取节点:document.getElementById("test") 2、通过标签获取节点:document.getElementsByTagName("div") 3、通过类名获取节点:document.getE
HTML5学堂
2018/03/12
1.4K0
【译】如何避免在JavaScript中阻塞DOM
原文链接:https://www.sitepoint.com/avoiding-dom-blocking/
腾讯IVWEB团队
2020/06/28
2.8K0
Mysql避免全表update
在测试的时候忘记写where条件导致全表更新的话,可以收拾包袱走人了 下面这条语句可以开启检查,当没有加where时拦截下来 set sql_safe_updates=1; 关闭: set sql_safe_updates=0;
DH镔
2019/12/20
2.7K0
mysql or条件可以使用索引而避免全表
CREATE TABLE IF NOT EXISTS `t_myisam` ( `id` int(1) NOT NULL AUTO_INCREMENT, `uid` int(11) NOT NULL, `aNum` char(20) DEFAULT NULL, PRIMARY KEY (`id`), KEY `uid` (`uid`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8mb4 AUTO_INCREMENT=1 ;
黄规速
2022/04/14
1.5K0
mysql or条件可以使用索引而避免全表
在货币计算中应该避免浮点数
float和double数据类型对金融计算(甚至是军事用途)都是有害的,永远不要用它们来进行货币计算。如果精度是您的需求之一,那么使用BigDecimal。
程序你好
2018/09/29
2.5K0
在货币计算中应该避免浮点数
SqlServer 循环建表、删除表、更新表
常用于分库分表 1、批量删除 declare @outter int declare @inner int declare @tablePrefix varchar(30) declare @tableName varchar(36) set @outter=1 set @inner=0 while (@outter<=12) begin set @tablePrefix='BankPayOrder_'+convert(varchar,@outter)+'_' while(@inner<=9) beg
郑小超.
2019/01/07
2.8K0
python如何使用for循环_Python 中for循环的应用
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/170074.html原文链接:https://javaforall.cn
全栈程序员站长
2022/09/22
7K0
这些优化技巧可以避免我们在 JS 中过多的使用 IF 语句
最近在重构代码时,我发现早期的代码使用太多的 if 语句,其程度是我从未见过的。这就是为什么我认为分享这些简单的技巧是非常重要的,这些技巧可以帮助我们避免过多的使用 if 语句。
前端小智@大迁世界
2020/05/11
3.3K0
在 Andorid 中为什么要避免「内存抖动」?
但是其实初步想,为什么要避免内存抖动呢?频繁创建对象,被 Java 虚拟机的回收机制自动回收了,这不是挺好的吗?开发者为什么还需要关心这个问题呢?
夏洛克的猫
2020/05/12
1.1K0
避免在云迁移过程中宕机
在公共云迁移期间,IT团队需要采取谨慎的步骤,以避免听到“系统宕机”这种可怕的提示。 随着组织迁移到基于云计算的基础设施,IT团队需要在迁移过程中保持可用性。但是,考虑到所有复杂性,在云计算迁移过程中,防止宕机或最小化停机时间并不容易。云计算团队需要考虑数据不一致,监控不同的软件版本,并检查其网络连接是否成功。 如果企业的应用程序崩溃,业务往往会停止。虽然精确的指标因企业和应用的情况而异,但调研机构Gartner公司在2014年发现,网络停机时间平均每分钟的损失为5,600美元。停机时间的高昂成本是企
静一
2018/03/27
9040
避免在云迁移过程中宕机
在循环内使用闭包(Closures)
闭包的本质是一个内部函数访问其作用域之外的变量。闭包可以用于实现诸如 私有变量 和 创建工厂函数之类的东西。
前端迷
2018/10/22
1.2K0
点击加载更多

相似问题

使用getAttribute的for-循环中的querySelector

13

在R中避免For-循环

55

避免R中的for-循环

33

在本例中避免for-循环的方法

12

如何避免R中的for-循环

12
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文