All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.alidaodao.app.RedisServiceAutoConfiguration Maven / Gradle / Ivy

package com.alidaodao.app;

import com.alidaodao.app.config.RedisConfig;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import java.util.Arrays;
import java.util.HashSet;
import java.util.Objects;
import java.util.Set;
import java.util.stream.Collectors;

/**
 * @author Jack
 * redis client
 */
@Configuration
@EnableConfigurationProperties(RedisProperties.class)
@ConditionalOnClass(RedisClient.class)
@ConditionalOnProperty(prefix="spring.redis",value="enabled",matchIfMissing=true)
public class RedisServiceAutoConfiguration {

    private static final Logger LOGGER = LoggerFactory.getLogger(RedisServiceAutoConfiguration.class);

    @Autowired
    private RedisProperties redisProperties;

    @Bean(value = "redisClient")
    @ConditionalOnMissingBean(RedisClient.class)
    public RedisClient redisClient() {
        if (!redisProperties.isEnable()) {
            LOGGER.warn("[REDIS-CLIENT] redis enable is false");
            return null;
        }
        if (Objects.isNull(redisProperties.getIndexes()) || redisProperties.getIndexes().length <= 0) {
            LOGGER.warn("[REDIS-CLIENT] redis indexes is empty");
            return null;
        }
        RedisConfig redisConfig = new RedisConfig();
        redisConfig.setHost(redisProperties.getHost());
        redisConfig.setPort(redisProperties.getPort());
        redisConfig.setPassword(redisProperties.getPassword());
        //此处为需要创建的redis db实例
        Set redisDbIndex = Arrays.stream(redisProperties.getIndexes()).collect(Collectors.toSet());
        RedisClient redisClient = new RedisClient(redisConfig, redisDbIndex);
        redisClient.setDefaultIndex(redisProperties.getDefaultIndex());
        LOGGER.info("[REDIS-CLIENT]redis client init success,you can use indexes: {}", redisDbIndex);
        return redisClient;
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy