码迷,mamicode.com
首页 > 数据库 > 详细

针对JedisShardInfo中无法修改db的解决办法

时间:2018-04-27 16:49:03      阅读:1686      评论:0      收藏:0      [点我收藏+]

标签:property   config   factory   index   --   illegal   pac   scope   inf   

package com.ldr.bean;

import java.lang.reflect.Field;

import redis.clients.jedis.JedisShardInfo;

public class MyJedisInfo {
    
    String host;
    int port;
    int db;

    public JedisShardInfo newInstance() throws NoSuchFieldException, SecurityException, IllegalArgumentException, IllegalAccessException {  
        JedisShardInfo jedisShardInfo=new JedisShardInfo(host,port) ;
        Class<? extends JedisShardInfo> clz = jedisShardInfo.getClass();
        Field declaredField = clz.getDeclaredField("db");
        declaredField.setAccessible(true);
        declaredField.set(jedisShardInfo, db);
        return jedisShardInfo;
    }

    public String getHost() {
        return host;
    }

    public void setHost(String host) {
        this.host = host;
    }

    public int getDb() {
        return db;
    }

    public void setDb(int db) {
        this.db = db;
    }
    public int getPort() {
        return port;
    }

    public void setPort(int port) {
        this.port = port;
    }  
}

spring中的application.xml中配置如下

    
    <!-- spring集成redis -->
    <bean id="jedisPoolConfig" class="redis.clients.jedis.JedisPoolConfig">
        <property name="maxTotal">
        <value>${redis.maxTotal}</value>
        </property>
        <property name="maxIdle">
         <value>${redis.maxIdle}</value>
        </property>
        <property name="testOnBorrow" value="true"/>
        <property name="testOnReturn" value="true"/>
    </bean>
   
     <bean id="shardedJedisPool" class="redis.clients.jedis.ShardedJedisPool"  scope="singleton">
        <constructor-arg index="0" ref="jedisPoolConfig" />
        <constructor-arg index="1">
            <list>
                <!-- <bean class="redis.clients.jedis.JedisShardInfo">
                    <constructor-arg name="host" value="${redis.host}" />
                    <constructor-arg name="port" value="${redis.port}" />
                </bean> -->
          
                <ref bean="jedisShardInfo"/><!-- 生产环境请换成上述 -->
            </list>
        </constructor-arg>
    </bean>
    
    <!-- 以下配置上生产请注释掉  begin-->
    <bean id="jedisFactory" class="com.ldr.bean.MyJedisInfo">
        <property name="host" value="${redis.host}"></property>
        <property name="port" value="${redis.port}"></property>
        <property name="db" value="${redis.db}"></property>
    </bean>  
     
    <bean id="jedisShardInfo" class="redis.clients.jedis.JedisShardInfo"  
        factory-bean="jedisFactory" factory-method="newInstance" >  
    </bean> 
     <!-- 以上配置上生产请注释掉 end -->

 

针对JedisShardInfo中无法修改db的解决办法

标签:property   config   factory   index   --   illegal   pac   scope   inf   

原文地址:https://www.cnblogs.com/wangyang108/p/8962925.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!