zoukankan      html  css  js  c++  java
  • springboot 2.1启动,redis报错Failed to instantiat ... java.lang.NoClassDefFoundError: org/apache/commons/pool2/impl/GenericObjectPoolConfig

     SpringBoot 2.1.1集成redis,在启动时报错信息如下:

    org.springframework.beans.factory.BeanCreationException: 
    Error creating bean with name 'redisConnectionFactory' defined in class path resource 
    [org/springframework/boot/autoconfigure/data/redis/LettuceConnectionConfiguration.class]: Bean instantiation via factory method failed; 
    nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory]: 
    Factory method 'redisConnectionFactory' threw exception; 
    nested exception is java.lang.NoClassDefFoundError: org/apache/commons/pool2/impl/GenericObjectPoolConfig

    解决方案:

    引入连接池依赖

    <dependency>
        <groupId>org.apache.commons</groupId>
        <artifactId>commons-pool2</artifactId>
        <version>2.8.0</version>
    </dependency

    另外:

    由于从springboot2.0开始,spring-boot-starter-data-redis默认使用 lettuce 代替Jedis,因此需要把配置文件中redis配置中的jedis改为lettuce,

    如下

    #rediss
    spring.redis.cluster.nodes=
    spring.redis.timeout=
    spring.redis.lettuce.pool.max-wait=
    spring.redis.lettuce.pool.max-active=
    spring.redis.lettuce.pool.max-idle=
    spring.redis.lettuce.pool.min-idle=

    如果使用jedis,需修改pom文件

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-redis</artifactId>
        <exclusions>
            <exclusion>
                <groupId>io.lettuce</groupId>
                <artifactId>lettuce-core</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
    <dependency>
        <groupId>redis.clients</groupId>
        <artifactId>jedis</artifactId>
    </dependency>

     RedisConfig.java

    @Bean
    public RedisConnectionFactory redisCF() {
        JedisConnectionFactory rcf = new JedisConnectionFactory();
        rcf.setHostName("127.0.0.1");
        rcf.setPort(6379);
        return rcf;
    }
    
    @Bean
    public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory factory) {
        RedisTemplate<String, Object> template = new RedisTemplate<String, Object>();
        template.setConnectionFactory(factory);
        return template;
    }

     如果使用Lettuce ,则pom文件如下:

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-redis</artifactId>
    </dependency>

    RedisConfig.java

    @Bean
    public RedisConnectionFactory redisCF() {
    // JedisConnectionFactory rcf = new JedisConnectionFactory();
        LettuceConnectionFactory rcf = new LettuceConnectionFactory();
        rcf.setHostName("127.0.0.1");
        rcf.setPort(6379);
    //        rcf.setPassword();
        return rcf;
    }
    
    @Bean
    public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory factory) {
        RedisTemplate<String, Object> template = new RedisTemplate<String, Object>();
        template.setConnectionFactory(factory);
        return template;
    }
  • 相关阅读:
    css3动画之1--animation小例子
    炎炎夏日,走入美妙的前端设计案例
    模拟腾讯、携程、百度音乐 移动端图片切换第一版
    仿QQ空间长图效果简易版--母亲节感恩
    001-搭建框架
    javascript事件绑定1-模拟jquery可爱的东西
    图片尺寸
    mvc3结合spring.net-依赖注入
    *创建索引初步
    Lucene的分词_中文分词器介绍
  • 原文地址:https://www.cnblogs.com/qingdaofu/p/13423750.html
Copyright © 2011-2022 走看看