springbppt2.0 redis 无法启动 org/apache/commons/pool2/impl/GenericObjectPoolConfig

springbppt2.0 redis 无法启动

Caused by: org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.springframework.data.redis.connection.RedisConnectionFactory]: Factory method ‘redisCF’ threw exception; nested exception is java.lang.NoClassDefFoundError: org/apache/commons/pool2/impl/GenericObjectPoolConfig

Caused by: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name ‘redisTemplate’ defined in class path resource [com/example/demo/RedisConfig.class]: Unsatisfied dependency expressed through method ‘redisTemplate’ parameter 0; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name ‘redisCF’ defined in class path resource [com/example/demo/RedisConfig.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.springframework.data.redis.connection.RedisConnectionFactory]: Factory method ‘redisCF’ threw exception; nested exception is java.lang.NoClassDefFoundError: org/apache/commons/pool2/impl/GenericObjectPoolConfig

java.lang.ClassNotFoundException: org.apache.commons.pool2.impl.GenericObjectPoolConfig

解决:

在这里插入图片描述

由于从springboot2.0开始,spring-boot-starter-data-redis默认使用 lettuce 代替Jedis

如果使用Jedis :

pom.xml

	<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:
@Configuration
public class RedisConfig {

@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.xml

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

RedisConfig.java:

@Configuration
public class RedisConfig {

@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;
}

}

github:https://github.com/feyye/spring_boot2_redis

猜你喜欢

转载自blog.csdn.net/weixin_43872964/article/details/86628179
今日推荐