Skip to content

Commit

Permalink
feat($AuthCenter): enable Redis cache
Browse files Browse the repository at this point in the history
  • Loading branch information
Johnny Miller (锺俊) committed Dec 30, 2020
1 parent 22c9cfb commit 6c14c7b
Show file tree
Hide file tree
Showing 3 changed files with 84 additions and 2 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,78 @@
package com.jmsoftware.maf.authcenter.universal.configuration;

import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.cache.CacheManager;
import org.springframework.cache.annotation.CachingConfigurerSupport;
import org.springframework.cache.annotation.EnableCaching;
import org.springframework.cache.interceptor.*;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.cache.RedisCacheConfiguration;
import org.springframework.data.redis.cache.RedisCacheManager;
import org.springframework.data.redis.connection.RedisConnectionFactory;
import org.springframework.data.redis.serializer.GenericJackson2JsonRedisSerializer;
import org.springframework.data.redis.serializer.RedisSerializationContext;

import javax.annotation.PostConstruct;
import java.util.Objects;

import static org.springframework.data.redis.cache.RedisCacheConfiguration.defaultCacheConfig;

/**
* Description: RedisCachingConfiguration, change description here.
*
* @author 钟俊(zhongjun), email: zhongjun@toguide.cn, date: 12/30/2020 11:48 AM
* @see
* <a href='https://blog.csdn.net/echizao1839/article/details/102660649'>Spring boot 之 spring-boot-starter-cache (整合 Redis)</a>
**/
@Slf4j
@Configuration
@EnableCaching
@RequiredArgsConstructor
public class RedisCachingConfiguration extends CachingConfigurerSupport {
private final RedisConnectionFactory redisConnectionFactory;

@PostConstruct
private void postConstruct() {
log.warn("Initial bean: {}", RedisCachingConfiguration.class.getSimpleName());
}

@Bean
@Override
public CacheManager cacheManager() {
RedisCacheConfiguration cacheConfiguration = defaultCacheConfig()
.disableCachingNullValues()
.serializeValuesWith(RedisSerializationContext.SerializationPair.fromSerializer(
new GenericJackson2JsonRedisSerializer()));
return RedisCacheManager
.builder(redisConnectionFactory)
.cacheDefaults(cacheConfiguration)
.build();
}

@Bean
@Override
public CacheResolver cacheResolver() {
return new SimpleCacheResolver(Objects.requireNonNull(cacheManager()));
}

@Bean
@Override
public KeyGenerator keyGenerator() {
return (target, method, params) -> {
StringBuilder stringBuilder = new StringBuilder();
stringBuilder.append(target.getClass().getName()).append("#").append(method.getName());
for (Object param : params) {
stringBuilder.append(":").append(param.toString());
}
return stringBuilder.toString();
};
}

@Bean
@Override
public CacheErrorHandler errorHandler() {
return new SimpleCacheErrorHandler();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.serializer.Jackson2JsonRedisSerializer;
import org.springframework.data.redis.serializer.RedisSerializationContext;
import org.springframework.data.redis.serializer.RedisSerializer;
import org.springframework.data.redis.serializer.StringRedisSerializer;

/**
Expand Down Expand Up @@ -63,10 +64,9 @@ public RedisTemplate<Object, Object> redisTemplate(RedisConnectionFactory redisC
@Bean
ReactiveRedisTemplate<Object, Object> reactiveRedisTemplate(ReactiveRedisConnectionFactory connectionFactory) {
log.warn("Initial bean: {}", ReactiveRedisTemplate.class.getSimpleName());
StringRedisSerializer keySerializer = new StringRedisSerializer();
Jackson2JsonRedisSerializer<Object> valueSerializer = new Jackson2JsonRedisSerializer<>(Object.class);
RedisSerializationContext<Object, Object> serializationContext = RedisSerializationContext
.newSerializationContext(keySerializer)
.newSerializationContext(RedisSerializationContext.SerializationPair.fromSerializer(RedisSerializer.string()))
.value(valueSerializer)
.hashValue(valueSerializer)
.build();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,8 @@
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import lombok.val;
import org.springframework.cache.annotation.CacheConfig;
import org.springframework.cache.annotation.Cacheable;
import org.springframework.http.HttpStatus;
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
import org.springframework.stereotype.Service;
Expand All @@ -34,11 +36,13 @@
@Slf4j
@Service
@RequiredArgsConstructor
@CacheConfig(cacheNames = "user-service-cache")
public class UserServiceImpl extends ServiceImpl<UserMapper, UserPersistence> implements UserService {
private final BCryptPasswordEncoder bCryptPasswordEncoder;
private final JwtService jwtService;

@Override
@Cacheable
public GetUserByLoginTokenResponse getUserByLoginToken(@NotBlank String loginToken) {
LambdaQueryWrapper<UserPersistence> wrapper = Wrappers.lambdaQuery();
wrapper.eq(UserPersistence::getStatus, UserStatus.ENABLED.getStatus())
Expand Down

0 comments on commit 6c14c7b

Please sign in to comment.