【问题标题】:Using jedis with spring, but not with spring-data lib, where to store pool?将jedis与spring一起使用,但不与spring-data lib一起使用,存储池在哪里?
【发布时间】:2012-01-08 10:57:30
【问题描述】:

在 jedis 文档中,它说要创建一个池:

JedisPool pool = new JedisPool(new JedisPoolConfig(), "localhost");

我应该将它静态存储在某个地方。

我知道 spring 有一个正在开发中的 spring-data 库,但我现在只想使用该库而不使用它。

你建议我在哪里创建这个对池的静态引用?

我应该创建一个 JedisService,然后有一个返回这个池的公共方法吗?

我是否使用单例模式来做到这一点?在返回之前锁定?

【问题讨论】:

    标签: java redis jedis


    【解决方案1】:

    如果您使用的是 Spring,则不能使用 new 并让对象处于 Spring 的控制之下。将其设为 Spring bean 并使用工厂方法对其进行初始化。

    您在 Spring 应用程序上下文 XML 中声明 bean(或者使用注释,如果您愿意的话):

    <bean id="jedisPool" class="foo.bar.JedisPool">
        <constructor-arg ref="jedisPoolCofig"/>
        <constructor-arg value="localhost"/
    </bean>
    

    【讨论】:

    • 关于如何定义 bean 并使其成为静态的任何提示?任何代码都将不胜感激,因为我对此并不熟悉。
    • 但这不会让它成为静态的吧?
    • Beans 不是静态的——你为什么这么认为?
    • 不,我要说的是,我如何对 jedisPool 进行静态引用? Jedis wiki 说要对 jedisPool 进行静态引用。
    • 为什么必须是静态的?您问题中的示例称为“新”;这不是静态的。
    猜你喜欢
    • 2017-11-18
    • 2014-03-10
    • 2014-12-20
    • 2017-05-20
    • 1970-01-01
    • 1970-01-01
    • 2014-10-21
    • 2017-11-07
    • 2012-05-10
    相关资源
    最近更新 更多