|
@@ -1,22 +1,37 @@
|
|
package cn.com.qmth.examcloud.core.questions.starter;
|
|
package cn.com.qmth.examcloud.core.questions.starter;
|
|
|
|
|
|
|
|
+import org.slf4j.MDC;
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
import org.springframework.boot.SpringApplication;
|
|
import org.springframework.boot.SpringApplication;
|
|
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
|
|
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
|
|
import org.springframework.boot.autoconfigure.SpringBootApplication;
|
|
import org.springframework.boot.autoconfigure.SpringBootApplication;
|
|
import org.springframework.boot.autoconfigure.domain.EntityScan;
|
|
import org.springframework.boot.autoconfigure.domain.EntityScan;
|
|
import org.springframework.boot.autoconfigure.web.MultipartAutoConfiguration;
|
|
import org.springframework.boot.autoconfigure.web.MultipartAutoConfiguration;
|
|
|
|
+import org.springframework.cloud.client.loadbalancer.LoadBalanced;
|
|
import org.springframework.cloud.netflix.eureka.EnableEurekaClient;
|
|
import org.springframework.cloud.netflix.eureka.EnableEurekaClient;
|
|
import org.springframework.cloud.netflix.feign.EnableFeignClients;
|
|
import org.springframework.cloud.netflix.feign.EnableFeignClients;
|
|
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.data.jpa.repository.config.EnableJpaRepositories;
|
|
import org.springframework.data.jpa.repository.config.EnableJpaRepositories;
|
|
import org.springframework.data.mongodb.repository.config.EnableMongoRepositories;
|
|
import org.springframework.data.mongodb.repository.config.EnableMongoRepositories;
|
|
|
|
+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.StringRedisSerializer;
|
|
|
|
+import org.springframework.web.client.RestTemplate;
|
|
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 com.fasterxml.jackson.annotation.JsonAutoDetect;
|
|
|
|
+import com.fasterxml.jackson.annotation.PropertyAccessor;
|
|
|
|
+import com.fasterxml.jackson.databind.ObjectMapper;
|
|
import com.qmth.commons.query.dao.impl.BaseQueryDaoImpl;
|
|
import com.qmth.commons.query.dao.impl.BaseQueryDaoImpl;
|
|
|
|
|
|
|
|
+import cn.com.qmth.examcloud.commons.base.logging.ExamCloudLog;
|
|
|
|
+import cn.com.qmth.examcloud.commons.base.logging.ExamCloudLogFactory;
|
|
|
|
+import cn.com.qmth.examcloud.commons.base.logging.SLF4JImpl;
|
|
|
|
+import cn.com.qmth.examcloud.commons.web.redis.RedisClient;
|
|
|
|
+import cn.com.qmth.examcloud.commons.web.redis.RedisClientImpl;
|
|
import cn.com.qmth.examcloud.core.questions.base.GridFSUtil;
|
|
import cn.com.qmth.examcloud.core.questions.base.GridFSUtil;
|
|
|
|
|
|
/**
|
|
/**
|
|
@@ -34,20 +49,52 @@ import cn.com.qmth.examcloud.core.questions.base.GridFSUtil;
|
|
@EnableAutoConfiguration(exclude = { MultipartAutoConfiguration.class })
|
|
@EnableAutoConfiguration(exclude = { MultipartAutoConfiguration.class })
|
|
public class Application {
|
|
public class Application {
|
|
|
|
|
|
|
|
+ private static final ExamCloudLog LOG = ExamCloudLogFactory.getLog(Application.class);
|
|
@Autowired
|
|
@Autowired
|
|
GridFSUtil gridFSUtil;
|
|
GridFSUtil gridFSUtil;
|
|
|
|
|
|
public static void main(String[] args) {
|
|
public static void main(String[] args) {
|
|
|
|
+ if (LOG instanceof SLF4JImpl) {
|
|
|
|
+ MDC.put("TRACE_ID", Thread.currentThread().getName());
|
|
|
|
+ }
|
|
|
|
+
|
|
SpringApplication.run(Application.class, args);
|
|
SpringApplication.run(Application.class, args);
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ @Bean
|
|
|
|
+ @LoadBalanced
|
|
|
|
+ public RestTemplate restTemplate() {
|
|
|
|
+ return new RestTemplate();
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ @Bean
|
|
|
|
+ public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory redisConnectionFactory) {
|
|
|
|
+ RedisTemplate<String, Object> redisTemplate = new RedisTemplate<>();
|
|
|
|
+ redisTemplate.setConnectionFactory(redisConnectionFactory);
|
|
|
|
+ Jackson2JsonRedisSerializer<?> 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);
|
|
|
|
+ redisTemplate.setValueSerializer(jackson2JsonRedisSerializer);
|
|
|
|
+ redisTemplate.setKeySerializer(new StringRedisSerializer());
|
|
|
|
+ redisTemplate.afterPropertiesSet();
|
|
|
|
+ return redisTemplate;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ @Bean
|
|
|
|
+ @Autowired
|
|
|
|
+ public RedisClient redisClient(RedisTemplate<String, Object> redisTemplate) {
|
|
|
|
+ return new RedisClientImpl(redisTemplate);
|
|
|
|
+ }
|
|
|
|
+
|
|
@Bean(name = "multipartResolver")
|
|
@Bean(name = "multipartResolver")
|
|
public MultipartResolver multipartResolver() {
|
|
public MultipartResolver multipartResolver() {
|
|
CommonsMultipartResolver resolver = new CommonsMultipartResolver();
|
|
CommonsMultipartResolver resolver = new CommonsMultipartResolver();
|
|
resolver.setDefaultEncoding("UTF-8");
|
|
resolver.setDefaultEncoding("UTF-8");
|
|
- resolver.setResolveLazily(true);// resolveLazily属性启用是为了推迟文件解析,以在在UploadAction中捕获文件大小异常
|
|
|
|
|
|
+ resolver.setResolveLazily(true);
|
|
resolver.setMaxInMemorySize(40960);
|
|
resolver.setMaxInMemorySize(40960);
|
|
- resolver.setMaxUploadSize(200 * 1024 * 1024);// 上传文件大小 50M 50*1024*1024
|
|
|
|
|
|
+ resolver.setMaxUploadSize(200 * 1024 * 1024);
|
|
return resolver;
|
|
return resolver;
|
|
}
|
|
}
|
|
}
|
|
}
|