From f58faf951a6abd155a31080af8a408e51cfed839 Mon Sep 17 00:00:00 2001 From: xiaofanku Date: Sun, 13 Sep 2020 13:51:43 +0800 Subject: [PATCH] =?UTF-8?q?=E6=94=B9=E7=94=A8GenericJackson2JsonRedisSeria?= =?UTF-8?q?lizer,redis=E4=B8=AD=E5=AD=98=E5=82=A8json?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../forum/core/service/BoardGroupService.java | 6 +-- .../forum/core/service/BoardService.java | 2 +- .../forum/core/service/TopicService.java | 2 +- .../apobates/forum/member/dao/MemberDao.java | 4 +- thrones/pom.xml | 3 +- .../forum/thrones/ThronesAppConfig.java | 43 ++++++++++++++----- .../utils/persistence/DataRepository.java | 5 +-- 7 files changed, 42 insertions(+), 23 deletions(-) diff --git a/core/src/main/java/com/apobates/forum/core/service/BoardGroupService.java b/core/src/main/java/com/apobates/forum/core/service/BoardGroupService.java index 5e79856c..26b7fa75 100644 --- a/core/src/main/java/com/apobates/forum/core/service/BoardGroupService.java +++ b/core/src/main/java/com/apobates/forum/core/service/BoardGroupService.java @@ -118,8 +118,8 @@ public interface BoardGroupService { Optional create(String title, String description, String encodeImageAddr, boolean status, int ranking); /** - * 查看指定的版块组(卷) - * + * [Cacheable]查看指定的版块组(卷) + * * @param id 版块组(卷)ID * @return */ @@ -153,7 +153,7 @@ public interface BoardGroupService { Optional checkOriginDirectNameUnique(String directoryNames)throws IllegalArgumentException,IllegalStateException; /** - * //编辑栏目时检查目录是否被使用 + * 编辑栏目时检查目录是否被使用 * * @since 20200427 * @param directoryNames 栏目的目录名称 diff --git a/core/src/main/java/com/apobates/forum/core/service/BoardService.java b/core/src/main/java/com/apobates/forum/core/service/BoardService.java index 479203b5..43a38c63 100644 --- a/core/src/main/java/com/apobates/forum/core/service/BoardService.java +++ b/core/src/main/java/com/apobates/forum/core/service/BoardService.java @@ -281,7 +281,7 @@ public interface BoardService { Optional getTermById(long termId); /** - * 查看指定的版块 + * [Cacheable]查看指定的版块 * * @param id 版块ID * @return diff --git a/core/src/main/java/com/apobates/forum/core/service/TopicService.java b/core/src/main/java/com/apobates/forum/core/service/TopicService.java index 9818f1d0..2745e916 100644 --- a/core/src/main/java/com/apobates/forum/core/service/TopicService.java +++ b/core/src/main/java/com/apobates/forum/core/service/TopicService.java @@ -530,7 +530,7 @@ public interface TopicService { List getRecentByUnixStamp(long boardId, int prevUnixStamp); /** - * 查看指定的话题 + * [Cacheable]查看指定的话题 * * @param id 话题ID * @return diff --git a/member/src/main/java/com/apobates/forum/member/dao/MemberDao.java b/member/src/main/java/com/apobates/forum/member/dao/MemberDao.java index 3ef083c2..f34b3fb5 100644 --- a/member/src/main/java/com/apobates/forum/member/dao/MemberDao.java +++ b/member/src/main/java/com/apobates/forum/member/dao/MemberDao.java @@ -77,12 +77,12 @@ public interface MemberDao { Optional findOneForAdmin(String memberNames, String encryptPswd); /** - * 查看指定的会员 + * [Cacheable]查看指定的会员 * * @param memberId 会员ID * @return */ - Optional findOneById(long memberId); + Member findOneById(long memberId); /** * 更新会员的状态 diff --git a/thrones/pom.xml b/thrones/pom.xml index f9d7f847..c06d7814 100644 --- a/thrones/pom.xml +++ b/thrones/pom.xml @@ -312,7 +312,6 @@ jedis 3.3.0 - + ROOT diff --git a/thrones/src/main/java/com/apobates/forum/thrones/ThronesAppConfig.java b/thrones/src/main/java/com/apobates/forum/thrones/ThronesAppConfig.java index 61f4b2aa..e62a537e 100644 --- a/thrones/src/main/java/com/apobates/forum/thrones/ThronesAppConfig.java +++ b/thrones/src/main/java/com/apobates/forum/thrones/ThronesAppConfig.java @@ -11,6 +11,20 @@ import com.apobates.forum.thrones.event.PostsQuoteNoticeListener; import com.apobates.forum.thrones.event.PostsReplyNoticeListener; import com.apobates.forum.thrones.event.TopicMoveNoticeListener; import com.apobates.forum.utils.Commons; +import com.fasterxml.jackson.annotation.JsonAutoDetect; +import com.fasterxml.jackson.annotation.JsonTypeInfo; +import com.fasterxml.jackson.annotation.PropertyAccessor; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.SerializationFeature; +import com.fasterxml.jackson.databind.jsontype.impl.LaissezFaireSubTypeValidator; +import com.fasterxml.jackson.datatype.jdk8.Jdk8Module; +import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule; +import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateDeserializer; +import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateTimeDeserializer; +import com.fasterxml.jackson.datatype.jsr310.deser.LocalTimeDeserializer; +import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateSerializer; +import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateTimeSerializer; +import com.fasterxml.jackson.datatype.jsr310.ser.LocalTimeSerializer; import javax.persistence.EntityManagerFactory; import javax.servlet.Filter; import javax.sql.DataSource; @@ -34,8 +48,13 @@ import org.springframework.orm.jpa.vendor.Database; import org.springframework.orm.jpa.vendor.EclipseLinkJpaVendorAdapter; import org.springframework.transaction.annotation.EnableTransactionManagement; import java.time.Duration; +import java.time.LocalDate; +import java.time.LocalDateTime; +import java.time.LocalTime; +import java.time.format.DateTimeFormatter; import org.springframework.data.redis.connection.jedis.JedisClientConfiguration; import org.springframework.data.redis.serializer.GenericJackson2JsonRedisSerializer; +import org.springframework.data.redis.serializer.RedisSerializationContext; import org.springframework.data.redis.serializer.StringRedisSerializer; import redis.clients.jedis.JedisPoolConfig; /** @@ -157,25 +176,26 @@ public class ThronesAppConfig { } @Bean - public RedisTemplate redisTemplate(RedisConnectionFactory cf) { + public RedisTemplate redisTemplate(RedisConnectionFactory cf, GenericJackson2JsonRedisSerializer valuesRedisSerializer) { RedisTemplate redisTemplate = new RedisTemplate<>(); redisTemplate.setConnectionFactory(cf); redisTemplate.setKeySerializer(new StringRedisSerializer()); - redisTemplate.setValueSerializer(new GenericJackson2JsonRedisSerializer()); + redisTemplate.setValueSerializer(valuesRedisSerializer); redisTemplate.setHashKeySerializer(new StringRedisSerializer()); - redisTemplate.setHashValueSerializer(new GenericJackson2JsonRedisSerializer()); + redisTemplate.setHashValueSerializer(valuesRedisSerializer); + redisTemplate.setDefaultSerializer(new GenericJackson2JsonRedisSerializer()); return redisTemplate; } @Bean - public RedisCacheManager cacheManager(RedisConnectionFactory connectionFactory) { + public RedisCacheManager cacheManager(RedisConnectionFactory connectionFactory, GenericJackson2JsonRedisSerializer valuesRedisSerializer) { RedisCacheConfiguration config = RedisCacheConfiguration .defaultCacheConfig() .entryTtl(Duration.ofDays(1)) - .disableCachingNullValues(); - //.serializeValuesWith(RedisSerializationContext.SerializationPair.fromSerializer(valuesRedisSerializer)); + .disableCachingNullValues() + .serializeValuesWith(RedisSerializationContext.SerializationPair.fromSerializer(valuesRedisSerializer)); return RedisCacheManager.builder(connectionFactory).cacheDefaults(config).build(); } - /* + @Bean("valuesRedisSerializer") public GenericJackson2JsonRedisSerializer redisSerializer(){ JavaTimeModule jtm = new JavaTimeModule(); @@ -186,14 +206,15 @@ public class ThronesAppConfig { jtm.addDeserializer(LocalDate.class, new LocalDateDeserializer(DateTimeFormatter.ofPattern("yyyy-MM-dd"))); jtm.addDeserializer(LocalTime.class, new LocalTimeDeserializer(DateTimeFormatter.ofPattern("HH:mm:ss"))); ObjectMapper mapper = new ObjectMapper() - .setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY) + .setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.NONE) + .setVisibility(PropertyAccessor.FIELD, JsonAutoDetect.Visibility.ANY) .registerModule(jtm) .registerModule(new Jdk8Module()) .findAndRegisterModules() + .activateDefaultTyping(LaissezFaireSubTypeValidator.instance, ObjectMapper.DefaultTyping.NON_FINAL, JsonTypeInfo.As.PROPERTY) .disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS); - GenericJackson2JsonRedisSerializer j2jrs = new GenericJackson2JsonRedisSerializer(mapper); - return j2jrs; - }*/ + return new GenericJackson2JsonRedisSerializer(mapper); + } // @Bean("tokenParamFilter") public Filter requestTokenParameterFilter() { diff --git a/utils/src/main/java/com/apobates/forum/utils/persistence/DataRepository.java b/utils/src/main/java/com/apobates/forum/utils/persistence/DataRepository.java index 5245a8fb..5b0eb0fa 100644 --- a/utils/src/main/java/com/apobates/forum/utils/persistence/DataRepository.java +++ b/utils/src/main/java/com/apobates/forum/utils/persistence/DataRepository.java @@ -24,7 +24,7 @@ public interface DataRepository extends Repository findOne(ID primaryKey); @@ -32,8 +32,7 @@ public interface DataRepository extends Repository edit(T updateEntity); -- GitLab