redis配置類-獲取配置類加密數(shù)據(jù)庫連接

對數(shù)據(jù)庫連接信息加解密,配置信息為密文設(shè)置在nacos配置中心,spring.prop.key為密鑰,加解密使用

配置密文信息可有由密鑰key依據(jù)加解密方法獲得

/**
 * redis配置
 */
@Configuration
@EnableCaching
@AutoConfigureBefore(RedisAutoConfiguration.class)
public class RedisConfig extends CachingConfigurerSupport {

    @Value(value = "${spring.data.redis.host}")
    private String host;
    @Value(value = "${spring.data.redis.password}")
    private String password;
    @Value(value = "${spring.data.redis.port}")
    private int port;
    @Value(value = "${spring.data.redis.database}")
    private int database;
    @Value(value = "${spring.prop.key}")
    private String key;


    @Bean
    public LettuceConnectionFactory lettuceConnectionFactory() {
        RedisStandaloneConfiguration configuration = new RedisStandaloneConfiguration();
        configuration.setHostName(SM4Utils.decryptCbc(StringUtils.stringToHexString(key), host));
        configuration.setPort(26379);
        configuration.setPassword(SM4Utils.decryptCbc(StringUtils.stringToHexString(key), password));
        return new LettuceConnectionFactory(configuration);
    }

    @Bean
    @SuppressWarnings(value = {"unchecked", "rawtypes"})
    public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory factory) {
        RedisTemplate<String, Object> template = new RedisTemplate<>();
        template.setConnectionFactory(factory);
        Jackson2JsonRedisSerializer<Object> valueSerializer = new Jackson2JsonRedisSerializer<>(Object.class);
        // 使用StringRedisSerializer來序列化和反序列化redis的key值
        template.setKeySerializer(new StringRedisSerializer());
        template.setValueSerializer(valueSerializer);
        // Hash的key也采用StringRedisSerializer的序列化方式
        template.setHashKeySerializer(new StringRedisSerializer());
        template.setHashValueSerializer(valueSerializer);
        template.afterPropertiesSet();
        return template;
    }

    @Bean
    public RedissonClient redissonClient() {
        Config config = new Config();
         config.setCodec(new JsonJacksonCodec());
        SingleServerConfig singleServerConfig = config.useSingleServer();
        String address = "redis://" + SM4Utils.decryptCbc(StringUtils.stringToHexString(key), host) + ":" + port;
        singleServerConfig.setAddress(address);
        singleServerConfig.setDatabase(database);
        singleServerConfig.setPassword(SM4Utils.decryptCbc(StringUtils.stringToHexString(key), password));
        singleServerConfig.setRetryInterval(10000);
        singleServerConfig.setRetryAttempts(3);
        return Redisson.create(config);
    }
}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容