SpringBoot在使用Redis时出现StringRedisTemplate运行NullPointerException的完全解决;
RedisTemplate运行NullPointerException的完全解决
三种解决方法:
》第一种:
传递参数类型StringRedisTemplate或者RedisTemplate,在@Autowired可注入的地方开始进行一步步传递该参数类型,到真正使用StringRedisTemplate或者RedisTemplate直接调用。
》第二种:(以StringRedisTemplate做演示)
将原本的
@Autowired
private StringRedisTemplate stringRedisTemplate;
替换成:
@Autowired
private StringRedisTemplate stringRedisTemplate;
public static StringRedisTemplate stringRedisTemplateStatic;
@PostConstruct
//在项目启动的时候执行该方法,
//可以理解为在spring容器初始化的时候执行该方法。
private void initStringRedisTemplate(){
stringRedisTemplateStatic=this.stringRedisTemplate;
}
第三种:(基于第二种解决方法,以RedisTemplate做演示)
创建一个RedisInitUtil类,专门来做初始化,需要时直接用该工具类获得StringRedisTemplate或者RedisTemplate对象。
@Component
public class RedisInitUtil {
@Autowired
private RedisTemplate redisTemplate;
public static RedisTemplate redisStatic;
@PostConstruct
public void getRedisTemplate(){
redisStatic=this.redisTemplate;
}
}
//需要时直接调用
private StringRedisTemplate redis=RedisInitUtil.redisStatic;