|
@@ -1,11 +1,6 @@
|
|
package com.qmth.themis.exam;
|
|
package com.qmth.themis.exam;
|
|
|
|
|
|
-import com.fasterxml.jackson.annotation.JsonAutoDetect;
|
|
|
|
-import com.fasterxml.jackson.annotation.PropertyAccessor;
|
|
|
|
-import com.fasterxml.jackson.databind.ObjectMapper;
|
|
|
|
-import com.qmth.themis.business.constant.SystemConstant;
|
|
|
|
import com.qmth.themis.common.contanst.Constants;
|
|
import com.qmth.themis.common.contanst.Constants;
|
|
-import com.qmth.themis.exam.config.DictionaryConfig;
|
|
|
|
import org.mybatis.spring.annotation.MapperScan;
|
|
import org.mybatis.spring.annotation.MapperScan;
|
|
import org.springframework.boot.SpringApplication;
|
|
import org.springframework.boot.SpringApplication;
|
|
import org.springframework.boot.autoconfigure.SpringBootApplication;
|
|
import org.springframework.boot.autoconfigure.SpringBootApplication;
|
|
@@ -13,25 +8,11 @@ import org.springframework.boot.autoconfigure.domain.EntityScan;
|
|
import org.springframework.cache.annotation.EnableCaching;
|
|
import org.springframework.cache.annotation.EnableCaching;
|
|
import org.springframework.context.annotation.Bean;
|
|
import org.springframework.context.annotation.Bean;
|
|
import org.springframework.context.annotation.ComponentScan;
|
|
import org.springframework.context.annotation.ComponentScan;
|
|
-import org.springframework.context.annotation.Primary;
|
|
|
|
-import org.springframework.data.redis.cache.RedisCacheConfiguration;
|
|
|
|
-import org.springframework.data.redis.cache.RedisCacheManager;
|
|
|
|
-import org.springframework.data.redis.cache.RedisCacheWriter;
|
|
|
|
-import org.springframework.data.redis.connection.RedisConnectionFactory;
|
|
|
|
-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.StringRedisSerializer;
|
|
|
|
import org.springframework.scheduling.annotation.EnableAsync;
|
|
import org.springframework.scheduling.annotation.EnableAsync;
|
|
import org.springframework.transaction.annotation.EnableTransactionManagement;
|
|
import org.springframework.transaction.annotation.EnableTransactionManagement;
|
|
import org.springframework.web.multipart.MultipartResolver;
|
|
import org.springframework.web.multipart.MultipartResolver;
|
|
import org.springframework.web.multipart.commons.CommonsMultipartResolver;
|
|
import org.springframework.web.multipart.commons.CommonsMultipartResolver;
|
|
|
|
|
|
-import javax.annotation.Resource;
|
|
|
|
-import java.time.Duration;
|
|
|
|
-import java.util.HashMap;
|
|
|
|
-import java.util.Map;
|
|
|
|
-
|
|
|
|
@SpringBootApplication
|
|
@SpringBootApplication
|
|
@ComponentScan(basePackages = {"com.qmth.themis"})
|
|
@ComponentScan(basePackages = {"com.qmth.themis"})
|
|
@MapperScan("com.qmth.themis.business.dao")
|
|
@MapperScan("com.qmth.themis.business.dao")
|
|
@@ -46,9 +27,6 @@ public class ThemisExamApplication {
|
|
SpringApplication.run(ThemisExamApplication.class, args);
|
|
SpringApplication.run(ThemisExamApplication.class, args);
|
|
}
|
|
}
|
|
|
|
|
|
- @Resource
|
|
|
|
- DictionaryConfig dictionaryConfig;
|
|
|
|
-
|
|
|
|
/**
|
|
/**
|
|
* 附件上传配置
|
|
* 附件上传配置
|
|
*
|
|
*
|
|
@@ -63,54 +41,4 @@ public class ThemisExamApplication {
|
|
resolver.setMaxUploadSize(200 * 1024 * 1024);//最大200M
|
|
resolver.setMaxUploadSize(200 * 1024 * 1024);//最大200M
|
|
return resolver;
|
|
return resolver;
|
|
}
|
|
}
|
|
-
|
|
|
|
- @Bean
|
|
|
|
- public RedisCacheManager cacheManager(RedisConnectionFactory redisConnectionFactory) {
|
|
|
|
- return new RedisCacheManager(
|
|
|
|
- RedisCacheWriter.nonLockingRedisCacheWriter(redisConnectionFactory),
|
|
|
|
- this.getRedisCacheConfigurationWithTtl(SystemConstant.REDIS_DEFAULT_EXPIRE_TIME), // 默认策略,未配置的 key 会使用这个
|
|
|
|
- this.getRedisCacheConfigurationMap() // 指定 key 策略
|
|
|
|
- );
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- private Map<String, RedisCacheConfiguration> getRedisCacheConfigurationMap() {
|
|
|
|
- Map<String, RedisCacheConfiguration> redisCacheConfigurationMap = new HashMap<>();
|
|
|
|
- redisCacheConfigurationMap.put(dictionaryConfig.cacheConfigDomain().getStudentOauth(), this.getRedisCacheConfigurationWithTtl(SystemConstant.REDIS_OAUTH_EXPIRE_TIME));
|
|
|
|
- redisCacheConfigurationMap.put(dictionaryConfig.cacheConfigDomain().getConfigOauth(), this.getRedisCacheConfigurationWithTtl(SystemConstant.REDIS_EXPIRE_TIME));
|
|
|
|
- return redisCacheConfigurationMap;
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- private RedisCacheConfiguration getRedisCacheConfigurationWithTtl(Long seconds) {
|
|
|
|
- Jackson2JsonRedisSerializer<Object> jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer<>(Object.class);
|
|
|
|
- ObjectMapper om = new ObjectMapper();
|
|
|
|
- om.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
|
|
|
|
- om.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);
|
|
|
|
- jackson2JsonRedisSerializer.setObjectMapper(om);
|
|
|
|
-
|
|
|
|
- RedisCacheConfiguration redisCacheConfiguration = RedisCacheConfiguration.defaultCacheConfig();
|
|
|
|
- redisCacheConfiguration = redisCacheConfiguration.serializeValuesWith(
|
|
|
|
- RedisSerializationContext
|
|
|
|
- .SerializationPair
|
|
|
|
- .fromSerializer(jackson2JsonRedisSerializer)
|
|
|
|
- ).entryTtl(Duration.ofSeconds(seconds));
|
|
|
|
- return redisCacheConfiguration;
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- @Bean
|
|
|
|
- @Primary
|
|
|
|
- public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory connectionFactory) {
|
|
|
|
- RedisTemplate<String, Object> template = new RedisTemplate<String, Object>();
|
|
|
|
- template.setConnectionFactory(connectionFactory);
|
|
|
|
- //使用Jackson2JsonRedisSerializer来序列化和反序列化redis的value值
|
|
|
|
- Jackson2JsonRedisSerializer<Object> serializer = new Jackson2JsonRedisSerializer<>(Object.class);
|
|
|
|
- ObjectMapper mapper = new ObjectMapper();
|
|
|
|
- mapper.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
|
|
|
|
- mapper.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);
|
|
|
|
- serializer.setObjectMapper(mapper);
|
|
|
|
- template.setValueSerializer(serializer);
|
|
|
|
- //使用StringRedisSerializer来序列化和反序列化redis的key值
|
|
|
|
- template.setKeySerializer(new StringRedisSerializer());
|
|
|
|
- template.afterPropertiesSet();
|
|
|
|
- return template;
|
|
|
|
- }
|
|
|
|
}
|
|
}
|