gpt4 book ai didi

java - 为什么 Redis 抛出 NullPointerException 通过 JUnit 使用 spring 和默认配置运行?

转载 作者:IT王子 更新时间:2023-10-29 06:03:05 27 4
gpt4 key购买 nike

我正在使用 Java 7、Spring 3.2、jedis 2.1.0、spring-data-redis 1.1.1 在 OS X 上工作,试图让最简单的 redis 设置与默认的 redis 配置一起工作。这意味着我没有将任何内容放入 redis.conf 文件中。当我做的时候

redis-server

它表示它已启动并准备好接受端口 6379 上的连接。

最初,我尝试使用 RedisTemplate 和 JedisConnectionFactory 的注释 Bean,但 spring 提示它无法创建或找到那些 bean,所以我这样做了。也许这表明了一个更基本的问题。所以我用下面稍微长一点的版本来做,但这至少看起来创建了 Redis 和 Jedis 组件。

这是我的测试:

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(loader=AnnotationConfigContextLoader.class)
public class RedisTest {
@Configuration
static class ContextConfiguration {


}

RedisTemplate<String, String> template;

private JedisConnectionFactory getJedisConnectionFactory() {
JedisConnectionFactory factory = new JedisConnectionFactory();
factory.setHostName("localhost");
factory.setPort(6379);
factory.setUsePool(true);
return factory;
}

private RedisTemplate<String, String> getRedisTemplate() {
RedisTemplate<String, String> redisTemplate = new RedisTemplate<String, String>();
redisTemplate.setConnectionFactory(getJedisConnectionFactory());
return redisTemplate;
}

@Test
public void testRedis() {
System.out.println("testing redis ");

template = getRedisTemplate();

template.opsForValue().set("Key", "Value");
String value = template.opsForValue().get("Key");
System.out.println("got value : " + value);
}
}

错误堆栈跟踪的顶部是

java.lang.NullPointerException
java.lang.NullPointerException
at org.springframework.data.redis.core.AbstractOperations.rawValue(AbstractOperations.java:110)
at org.springframework.data.redis.core.DefaultValueOperations.set(DefaultValueOperations.java:166)
at com.mycompany.storage.RedisTest.testRedis(RedisTest.java:46)

最佳答案

问题是 redisTemplate 和 jedisConnectionFactory 都需要调用 afterPropertiesSet()。通常这由 Spring 配置调用,但由于这对我不起作用,所以必须显式调用它。

此外,这些行

 factory.setHostName("localhost")
factory.setPort(6379)
factory.setUsePool(true)

是不必要的,因为它们是默认值。

关于java - 为什么 Redis 抛出 NullPointerException 通过 JUnit 使用 spring 和默认配置运行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23943191/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com