使用redisUtil工具类来封装的redis,用的时候发现redisTemplate一直为null。
/**
* RedisTemplate 工具类
*/
@Component
public class RedisUtil {
@Autowired
private RedisTemplate redisTemplate;
/**
* 给一个指定的 key 值附加过期时间
*
* @param key
* @param time
* @return
*/
public boolean expire(String key, long time) {
return redisTemplate.expire(key, time, TimeUnit.SECONDS);
}
/**
* 根据key 获取过期时间
*
* @param key
* @return
*/
public long getTime(String key) {
return redisTemplate.getExpire(key, TimeUnit.SECONDS);
}
...
}
然后调用的时候
redisUtil = new RedisUtil();
redisUtil.
发现这样不行,需要在调用的地方注入
@Component
@Order(value = 1)
public class RedisInit implements CommandLineRunner {
Logger logger = LoggerFactory.getLogger(this.getClass());
@Autowired
ParmDicService parmDicService;
@Autowired
RedisUtil redisUtil;
@Override
public void run(String... as) throws Exception {
logger.info(">>>>>>>>>>>>>>>服务启动执行,执行加载redis缓存开始<<<<<<<<<<<<<");
try {
ParmDic parmDic = new ParmDic();
List<ParmDic> parmList = parmDicService.findlist(parmDic);
redisUtil.set("aa", "1111");
} catch (Exception e) {
e.printStackTrace();
}
logger.info(">>>>>>>>>>>>>>>服务启动执行,执行加载redis缓存结束<<<<<<<<<<<<<");
}
}
在SpringBoot应用中使用RedisUtil工具类时,遇到RedisTemplate为null的错误。RedisUtil类通过@Autowired注解注入了RedisTemplate,但在调用时不直接注入而是通过new RedisUtil()创建实例,导致无法获取到redisTemplate。正确做法是在调用的地方同样使用@Autowired注入RedisUtil,例如在RedisInit类中注入并使用。


被折叠的 条评论
为什么被折叠?



