有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java Spring的许多缓存实现

我需要在应用程序中使用几个memcached服务器

到目前为止,我只使用了一种配置:

<bean id="memcachedClient" class="net.spy.memcached.spring.MemcachedClientFactoryBean" scope="singleton">
    <property name="servers" value="${app.memcached.url}"/>
    <property name="protocol" value="BINARY"/>
    <property name="transcoder">
        <bean class="net.spy.memcached.transcoders.SerializingTranscoder">
            <property name="compressionThreshold" value="1024"/>
        </bean>
    </property>
    <property name="opTimeout" value="1000"/>
    <property name="timeoutExceptionThreshold" value="1998"/>
    <property name="locatorType" value="CONSISTENT"/>
    <property name="failureMode" value="Redistribute"/>
    <property name="useNagleAlgorithm" value="false"/>
</bean>

当我想使用两台服务器时,我只想添加:

<bean id="memcachedClient" class="net.spy.memcached.spring.MemcachedClientFactoryBean" scope="singleton">
    <property name="servers" value="${app.memcached.url}"/>
    <property name="protocol" value="BINARY"/>
    <property name="transcoder">
        <bean class="net.spy.memcached.transcoders.SerializingTranscoder">
            <property name="compressionThreshold" value="1024"/>
        </bean>
    </property>
    <property name="opTimeout" value="1000"/>
    <property name="timeoutExceptionThreshold" value="1998"/>
    <property name="locatorType" value="CONSISTENT"/>
    <property name="failureMode" value="Redistribute"/>
    <property name="useNagleAlgorithm" value="false"/>
</bean>

<bean id="memcachedAs" class="net.spy.memcached.spring.MemcachedClientFactoryBean" scope="singleton">
    <property name="servers" value="${app.memcached.url.as}"/>
    <property name="protocol" value="BINARY"/>
    <property name="transcoder">
        <bean class="net.spy.memcached.transcoders.SerializingTranscoder">
            <property name="compressionThreshold" value="1024"/>
        </bean>
    </property>
    <property name="opTimeout" value="1000"/>
    <property name="timeoutExceptionThreshold" value="1998"/>
    <property name="locatorType" value="CONSISTENT"/>
    <property name="failureMode" value="Redistribute"/>
    <property name="useNagleAlgorithm" value="false"/>
</bean>

但我得到了一个错误:

is org.springframework.beans.factory.NoSuchBeanDefinitionException: No unique bean of type [net.spy.memcached.MemcachedClient] is defined: expected single matching bean but found 

你能帮我实现很多配置吗


共 (1) 个答案

  1. # 1 楼答案

    我假设你有一个注射目标

    @Autowired
    private MemcachedClient client;
    

    Spring将尝试按bean的类型解析它。但是在你的上下文中有两个这种类型的bean,所以Spring不知道该选择哪一个。相反,您可以通过ID注入bean

    @Resource(name="memcachedAs")
    private MemcachedClient client;
    

    甚至

    @Autowired 
    @Qualifier("memcachedAs")
    private MemcachedClient client;