[英]Cannot invoke because "this.redisService" is null
我尝试使用 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;
}
它显示了 1 次使用 setValue 方法,但是我有一个 java.lang.NullPointerException:Cannot invoke "service.RedisService.setValue(String, java.lang.Long)" 因为 "this.redisService" 是 null
我希望打印出设定值 10。
测试代码中的 NullPointerExecption 通常存在 DI 不当的问题。 确保您的 RedisService 已正确注入 RedisDemoTest class。
例如@Resource 的target 是基于Field 和Setter 方法的,所以你需要为setter 方法构造一个构造函数,否则会报错。
我个人推荐使用@Autowired,或者@Inject,因为@Resource is deprecated since Java 9 (jdk1.9)
这个链接对我帮助很大: https://www.baeldung.com/spring-annotations-resource-inject-autowire
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.