Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/386.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java springboot取消对模板的绑定。可能会产生NullPointerException_Java_Spring Boot_Lettuce - Fatal编程技术网

Java springboot取消对模板的绑定。可能会产生NullPointerException

Java springboot取消对模板的绑定。可能会产生NullPointerException,java,spring-boot,lettuce,Java,Spring Boot,Lettuce,我在项目中使用springboot(2.3.1)和莴苣 滤器 @Slf4j @WebFilter(filterName = "requestWrapperFilter", urlPatterns = {"/*"}) public class RequestWrapperFilter implements Filter { @Resource private RedisTemplate redisTemplate; @Ove

我在项目中使用springboot(2.3.1)和莴苣

滤器

@Slf4j
@WebFilter(filterName = "requestWrapperFilter", urlPatterns = {"/*"})
public class RequestWrapperFilter implements Filter {
    @Resource
    private RedisTemplate redisTemplate;
    
    @Override
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
    ...
                if (redisTemplate.hasKey(COMMON_HEAD_TOKEN_NAME + token)) {
                    redisTemplate.delete(COMMON_HEAD_TOKEN_NAME + token);
                }
    }
    ...
}
重新配置的配置如下所示:

@Configuration
@Component
public class RedisConfig {
    @Bean
    public RedisTemplate<String, Serializable> redisTemplate(LettuceConnectionFactory connectionFactory) {
        RedisTemplate<String, Serializable> redisTemplate = new RedisTemplate<>();
        redisTemplate.setKeySerializer(new StringRedisSerializer());
        redisTemplate.setValueSerializer(new Jackson2JsonRedisSerializer(Object.class));
        redisTemplate.setConnectionFactory(connectionFactory);
        return redisTemplate;
    }
}

我可以忽略吗?

第一个警告意味着
hasKey
方法返回一个对象包装器,但如果
条件隐式地解除了它的绑定(即将调用结果转换为原始值),则在
内使用它。如果由于某种原因,
hasKey
方法返回
null
,您将得到一个错误。为了安全起见,请按如下方式检查钥匙是否存在:

if (Boolean.TRUE.equals(redisTemplate.hasKey(COMMON_HEAD_TOKEN_NAME + token))) {
@Resource
private RedisTemplate<String, Serializable> redisTemplate;
第二个警告意味着
redisTemplate
字段具有原始类型,但是
redisTemplate
类是参数化的。要消除警告,请在筛选器中定义
redisTemplate
字段,如下所示:

if (Boolean.TRUE.equals(redisTemplate.hasKey(COMMON_HEAD_TOKEN_NAME + token))) {
@Resource
private RedisTemplate<String, Serializable> redisTemplate;
@Resource
私有再贴现模板;