提交 f58faf95 编写于 作者: 街头小贩's avatar 街头小贩

改用GenericJackson2JsonRedisSerializer,redis中存储json

上级 7686eba8
......@@ -118,8 +118,8 @@ public interface BoardGroupService {
Optional<BoardGroup> create(String title, String description, String encodeImageAddr, boolean status, int ranking);
/**
* 查看指定的版块组(卷)
*
* [Cacheable]查看指定的版块组(卷)
*
* @param id 版块组(卷)ID
* @return
*/
......@@ -153,7 +153,7 @@ public interface BoardGroupService {
Optional<Boolean> checkOriginDirectNameUnique(String directoryNames)throws IllegalArgumentException,IllegalStateException;
/**
* //编辑栏目时检查目录是否被使用
* 编辑栏目时检查目录是否被使用
*
* @since 20200427
* @param directoryNames 栏目的目录名称
......
......@@ -281,7 +281,7 @@ public interface BoardService {
Optional<Board> getTermById(long termId);
/**
* 查看指定的版块
* [Cacheable]查看指定的版块
*
* @param id 版块ID
* @return
......
......@@ -530,7 +530,7 @@ public interface TopicService {
List<TopicReplica> getRecentByUnixStamp(long boardId, int prevUnixStamp);
/**
* 查看指定的话题
* [Cacheable]查看指定的话题
*
* @param id 话题ID
* @return
......
......@@ -77,12 +77,12 @@ public interface MemberDao {
Optional<Member> findOneForAdmin(String memberNames, String encryptPswd);
/**
* 查看指定的会员
* [Cacheable]查看指定的会员
*
* @param memberId 会员ID
* @return
*/
Optional<Member> findOneById(long memberId);
Member findOneById(long memberId);
/**
* 更新会员的状态
......
......@@ -312,7 +312,6 @@
<artifactId>jedis</artifactId>
<version>3.3.0</version>
</dependency>
<!--
<dependency>
<groupId>com.fasterxml.jackson.datatype</groupId>
<artifactId>jackson-datatype-jsr310</artifactId>
......@@ -322,7 +321,7 @@
<groupId>com.fasterxml.jackson.datatype</groupId>
<artifactId>jackson-datatype-jdk8</artifactId>
<version>${jackson.version}</version>
</dependency>-->
</dependency>
</dependencies>
<build>
<finalName>ROOT</finalName>
......
......@@ -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<String, Object> redisTemplate(RedisConnectionFactory cf) {
public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory cf, GenericJackson2JsonRedisSerializer valuesRedisSerializer) {
RedisTemplate<String, Object> 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() {
......
......@@ -24,7 +24,7 @@ public interface DataRepository<T, ID extends Serializable> extends Repository<T
* 查看实体
*
* @param primaryKey 实体主键
* @return 成功返回Result.success(T)
* @return 可能返回null
*/
Optional<T> findOne(ID primaryKey);
......@@ -32,8 +32,7 @@ public interface DataRepository<T, ID extends Serializable> extends Repository<T
* 编辑实体
*
* @param updateEntity 实体
* @return
* 成功返回Result.success(true)失败返回Result.success(false)遇到异常返回Result.failure(e)
* @return 成功返回Optional.of(true)
*/
Optional<Boolean> edit(T updateEntity);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册