spring-data-redis icon indicating copy to clipboard operation
spring-data-redis copied to clipboard

Simplify afterPropertiesSet() Method in `RedisTemplate` Using Objects.requireNonNullElse

Open ijlijijij opened this issue 1 year ago • 0 comments

The afterPropertiesSet() method currently contains multiple null checks and assignments that can be simplified. By utilizing Java 9’s Objects.requireNonNullElse and Objects.requireNonNullElseGet methods, we can make the code more concise, readable, and maintainable.

AS-IS

public void afterPropertiesSet() {
    super.afterPropertiesSet();

    if (defaultSerializer == null) {
        defaultSerializer = new JdkSerializationRedisSerializer(
            classLoader != null ? classLoader : this.getClass().getClassLoader());
    }

    if (enableDefaultSerializer) {
        if (keySerializer == null) {
            keySerializer = defaultSerializer;
        }
        if (valueSerializer == null) {
            valueSerializer = defaultSerializer;
        }
        if (hashKeySerializer == null) {
            hashKeySerializer = defaultSerializer;
        }
        if (hashValueSerializer == null) {
            hashValueSerializer = defaultSerializer;
        }
    }

    if (scriptExecutor == null) {
        this.scriptExecutor = new DefaultScriptExecutor<>(this);
    }

    initialized = true;
}

TO-BE

public void afterPropertiesSet() {
    super.afterPropertiesSet();

    defaultSerializer = Objects.requireNonNullElseGet(
        defaultSerializer,
        () -> new JdkSerializationRedisSerializer(
            Objects.requireNonNullElse(classLoader, getClass().getClassLoader()))
    );

    if (enableDefaultSerializer) {
        keySerializer = Objects.requireNonNullElse(keySerializer, defaultSerializer);
        valueSerializer = Objects.requireNonNullElse(valueSerializer, defaultSerializer);
        hashKeySerializer = Objects.requireNonNullElse(hashKeySerializer, defaultSerializer);
        hashValueSerializer = Objects.requireNonNullElse(hashValueSerializer, defaultSerializer);
    }

    scriptExecutor = Objects.requireNonNullElseGet(
        scriptExecutor,
        () -> new DefaultScriptExecutor<>(this)
    );

    initialized = true;
}
}

ijlijijij avatar Sep 23 '24 00:09 ijlijijij