Skip to content

Simplify afterPropertiesSet() Method in RedisTemplate Using Objects.requireNonNullElse #3003

Open
@ijlijijij

Description

@ijlijijij

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;
}
}

Metadata

Metadata

Assignees

No one assigned

    Labels

    status: declinedA suggestion or change that we don't feel we should currently apply

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions