无法调用,因为"this.redisService"为空



我尝试使用Redis来设置股票价值。

@SpringBootTest
public class RedisDemoTest{
@Resource
private RedisService redisService;
@Test
public void stockTest() {
String value  = redisService.setValue("stock:19",10L).getValue("stock:19");
System.out.println(value);
}
}
这是我的RedisService代码

我尝试了@Resource和@Autowired


@Service
public class RedisService {
@Resource
private JedisPool jedisPool;
public RedisService setValue(String key, Long value){
Jedis client = jedisPool.getResource();
client.set(key,value.toString());
client.close();
return this;
}
public String getValue(String key) {
Jedis client = jedisPool.getResource();
String value = client.get(key);
client.close();
return value;
}

它显示了setValue方法的1个用法,但是我有一个java.lang。NullPointerException:不能调用"service.RedisService。setValue(字符串,java.lang.Long)";因为"this.redisService"为空

我希望打印出值10,这是设置的值。

测试代码中的nullpointerexception通常存在不正确的DI问题。确保你的RedisService被正确地注入到RedisDemoTest类中。

例如,@Resource的目标是基于Field和Setter方法的,所以你需要为Setter方法创建一个构造函数,否则,它会报错。

我个人建议使用@Autowired或@Inject,因为@Resource自Java 9 (jdk1.9)以来已被弃用

这个链接帮了我很多:https://www.baeldung.com/spring-annotations-resource-inject-autowire

最新更新