From 5097d13418e9a0bf605f5272f1b9e60fc62c80cb Mon Sep 17 00:00:00 2001 From: kaiyu <404897439@qq.com> Date: Wed, 10 Mar 2021 17:26:01 +0800 Subject: [PATCH] common模块: 增加 AESUtils MD5Utils ObjectUtils TokenUtils manage模块: 完整用户登陆功能 --- screen-manage/src/main/java/com/moral/api/config/redis/RedisConfig.java | 75 ++++++++++++++++++++++++++++++++++++- 1 files changed, 73 insertions(+), 2 deletions(-) diff --git a/screen-manage/src/main/java/com/moral/api/config/redis/RedisConfig.java b/screen-manage/src/main/java/com/moral/api/config/redis/RedisConfig.java index b63690d..5c1c10a 100644 --- a/screen-manage/src/main/java/com/moral/api/config/redis/RedisConfig.java +++ b/screen-manage/src/main/java/com/moral/api/config/redis/RedisConfig.java @@ -1,26 +1,38 @@ package com.moral.api.config.redis; +import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; import com.fasterxml.jackson.annotation.JsonAutoDetect; import com.fasterxml.jackson.annotation.PropertyAccessor; import com.fasterxml.jackson.databind.ObjectMapper; +import org.apache.commons.pool2.impl.GenericObjectPoolConfig; +import org.springframework.beans.factory.annotation.Value; import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.data.redis.connection.RedisConnectionFactory; +import org.springframework.data.redis.connection.RedisPassword; +import org.springframework.data.redis.connection.RedisStandaloneConfiguration; +import org.springframework.data.redis.connection.jedis.JedisConnectionFactory; +import org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory; +import org.springframework.data.redis.connection.lettuce.LettucePoolingClientConfiguration; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.data.redis.core.StringRedisTemplate; import org.springframework.data.redis.serializer.Jackson2JsonRedisSerializer; import org.springframework.data.redis.serializer.StringRedisSerializer; +import redis.clients.jedis.JedisPoolConfig; + +import java.time.Duration; @Configuration public class RedisConfig { - @Bean(name="redisTemplate") + @Bean(name = "redisTemplate") @ConditionalOnMissingBean(StringRedisTemplate.class) //������������������ ���������������������RedisTemplate ������������ ������������������ - public RedisTemplate<String,Object> stringRedisTemplate(RedisConnectionFactory redisConnectionFactory) { + public RedisTemplate<String, Object> stringRedisTemplate(RedisConnectionFactory redisConnectionFactory) { RedisTemplate<String, Object> redisTemplate = new RedisTemplate<String, Object>(); redisTemplate.setConnectionFactory(redisConnectionFactory); + Jackson2JsonRedisSerializer jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer(Object.class); ObjectMapper objectMapper = new ObjectMapper(); objectMapper.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY); @@ -39,4 +51,63 @@ redisTemplate.afterPropertiesSet(); return redisTemplate; } + + + @Bean(name = "tokenRedisTemplate") + public RedisTemplate<String, Object> getTokenRedisTemplate( + @Value("${spring.tokenRedis.host}") String hostName, + @Value("${spring.tokenRedis.password}") String password, + @Value("${spring.tokenRedis.port}") int port, + @Value("${spring.tokenRedis.database}") int database, + @Value("${spring.tokenRedis.pool.max-active}") int maxActive, + @Value("${spring.tokenRedis.pool.max-idle}") int maxIdle, + @Value("${spring.tokenRedis.pool.min-idle}") int minIdle, + @Value("${spring.tokenRedis.pool.max-wait}") long maxWait, + @Value("${spring.tokenRedis.timeout}") long timeout + ) { + RedisStandaloneConfiguration configuration = new RedisStandaloneConfiguration(); + configuration.setHostName(hostName); + configuration.setPort(port); + configuration.setDatabase(database); + RedisPassword redisPassword = RedisPassword.of(password); + configuration.setPassword(redisPassword); + + GenericObjectPoolConfig genericObjectPoolConfig = new GenericObjectPoolConfig(); + genericObjectPoolConfig.setMaxTotal(maxActive); + genericObjectPoolConfig.setMinIdle(minIdle); + genericObjectPoolConfig.setMaxIdle(maxIdle); + genericObjectPoolConfig.setMaxWaitMillis(maxWait); + + LettucePoolingClientConfiguration.LettucePoolingClientConfigurationBuilder builder = LettucePoolingClientConfiguration.builder(); + builder.poolConfig(genericObjectPoolConfig); + builder.commandTimeout(Duration.ofSeconds(timeout)); + LettuceConnectionFactory connectionFactory = new LettuceConnectionFactory(configuration, builder.build()); + connectionFactory.afterPropertiesSet(); + + return createRedisTemplate(connectionFactory); + } + + public RedisTemplate createRedisTemplate(RedisConnectionFactory redisConnectionFactory) { + RedisTemplate<String, Object> redisTemplate = new RedisTemplate<>(); + redisTemplate.setConnectionFactory(redisConnectionFactory); + + Jackson2JsonRedisSerializer<Object> jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer<>(Object.class); + ObjectMapper objectMapper = new ObjectMapper(); + objectMapper.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY); + objectMapper.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL); + jackson2JsonRedisSerializer.setObjectMapper(objectMapper); + + StringRedisSerializer stringRedisSerializer = new StringRedisSerializer(); + // key������String������������������ + redisTemplate.setKeySerializer(stringRedisSerializer); + // hash���key���������String������������������ + redisTemplate.setHashKeySerializer(stringRedisSerializer); + // valuevalue������jackson��������������� + redisTemplate.setValueSerializer(jackson2JsonRedisSerializer); + // hash���value������jackson��������������� + redisTemplate.setHashValueSerializer(jackson2JsonRedisSerializer); + redisTemplate.afterPropertiesSet(); + redisTemplate.afterPropertiesSet(); + return redisTemplate; + } } -- Gitblit v1.8.0