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

com.moon.spring.boot.MoonUtilConfiguration Maven / Gradle / Ivy

package com.moon.spring.boot;

import com.moon.core.util.logger.Logger;
import com.moon.core.util.logger.LoggerUtil;
import com.moon.spring.SpringUtil;
import com.moon.spring.data.redis.ExceptionHandler;
import com.moon.spring.data.redis.RedisService;
import com.moon.spring.data.redis.StringRedisService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.ImportSelector;
import org.springframework.core.type.AnnotationMetadata;
import org.springframework.data.redis.cache.RedisCacheManager;
import org.springframework.data.redis.connection.RedisConnectionFactory;
import org.springframework.data.redis.core.RedisTemplate;

import java.util.ArrayList;
import java.util.List;

/**
 * configuration
 *
 * @author moonsky
 */
@Configuration
@ConditionalOnMissingBean({MoonUtilConfiguration.class})
public class MoonUtilConfiguration implements ImportSelector {

    private final static Logger logger = LoggerUtil.getLogger();

    @Override
    @SuppressWarnings("all")
    public String[] selectImports(AnnotationMetadata metadata) {
        List classes = new ArrayList<>();
        classes.add(SpringUtil.class.getName());
        try {
            RedisTemplate.class.toString();
            classes.add(RedisConfiguration.class.getName());
        } catch (Throwable ignored) {
        }
        return classes.toArray(new String[classes.size()]);
    }

    @ConditionalOnMissingBean(value = {RedisConfiguration.class})
    @ConditionalOnBean(name = "redisTemplate")
    public static class RedisConfiguration {

        @Autowired(required = false)
        private ExceptionHandler exceptionHandler;

        @Bean
        @ConditionalOnMissingBean(value = {RedisService.class}, name = "redisService")
        public RedisService redisService(RedisTemplate redisTemplate) {
            return new RedisService(redisTemplate, exceptionHandler);
        }

        @Bean
        @ConditionalOnMissingBean(value = {StringRedisService.class}, name = "stringRedisService")
        public StringRedisService stringRedisService(RedisTemplate redisTemplate) {
            return new StringRedisService(redisTemplate, exceptionHandler);
        }

        @Bean
        @ConditionalOnMissingBean(value = {RedisCacheManager.class}, name = "redisCacheManager")
        public RedisCacheManager redisCacheManager(RedisConnectionFactory factory) {
            return RedisCacheManager.create(factory);
        }
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy