1. ホーム
  2. ジャワ

FAIL_ON_EMPTY_BEANS をオフにする(スプリングブート・ジャクソン用

2022-03-15 08:58:59

例外エラーメッセージが発生しました(redisキャッシュがシリアライズを処理するとき)。

org.springframework.data.redis.serializer.SerializationException: クラス org.springframework.cache.interceptor.SimpleKey のシリアライザが見つからず、BeanSerializer を作成するためのプロパティが見つかりませんでした (例外を回避するには、SerializationFeature.FAIL_ON_ EMPTY_BEANS を無効にします); 入れ子の例外は com.fasterxml.jackson.databind.JsonMappingException.JSONSerializationException.JSON を書けない: この例外は、次のようになります。クラス org.springframework.cache.interceptor.SimpleKey に対してシリアライザが見つからず、BeanSerializer を作成するためのプロパティが見つかりません (例外を回避するには、SerializationFeature.FAIL_ON_ EMPTY_BEANS を無効にしてください)。







回避策(ObjectMapper Beanを定義し、jackson2JsonRedisSerializerはObjectMapperを自身の定義したBeanに設定する)。

@Bean
public ObjectMapper objectMapper() {
    return new ObjectMapper().disable(SerializationFeature.FAIL_ON_EMPTY_BEANS);
}
/**
 * Integer redis template redis template.
 *
 * @param redisConnectionFactory the redis connection factory
 * @return the redis template
 */
@Bean
public RedisTemplate<Long, UserStudentInfo> userStudentRedisTemplate(RedisConnectionFactory
                                                                   redisConnectionFactory) {
    RedisTemplate<Long, UserStudentInfo> redisTemplate = new RedisTemplate<>();
    Jackson2JsonRedisSerializer<UserStudentInfo> jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer<>
            (UserStudentInfo.class);
    jackson2JsonRedisSerializer.setObjectMapper(objectMapper());

    redisTemplate.setConnectionFactory(redisConnectionFactory);
    redisTemplate.setKeySerializer(jackson2JsonRedisSerializer);
    redisTemplate.setHashKeySerializer(stringRedisSerializer);
    redisTemplate.setValueSerializer(jackson2JsonRedisSerializer);
    redisTemplate.setHashValueSerializer(jackson2JsonRedisSerializer);
    redisTemplate.afterPropertiesSet();
    return redisTemplate;
}