|
@@ -1,54 +1,100 @@
|
|
package cn.com.qmth.examcloud.core.questions.starter;
|
|
package cn.com.qmth.examcloud.core.questions.starter;
|
|
|
|
|
|
-import cn.com.qmth.examcloud.core.questions.base.GridFSUtil;
|
|
|
|
-
|
|
|
|
-import com.qmth.commons.query.dao.impl.BaseQueryDaoImpl;
|
|
|
|
-
|
|
|
|
|
|
+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.discovery.EnableDiscoveryClient;
|
|
|
|
|
|
+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.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 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;
|
|
|
|
+
|
|
/**
|
|
/**
|
|
* 项目入口主程序
|
|
* 项目入口主程序
|
|
*
|
|
*
|
|
*/
|
|
*/
|
|
-@ComponentScan(basePackages = { "cn.com.qmth"})
|
|
|
|
-@EntityScan(basePackages = { "cn.com.qmth"})
|
|
|
|
-@EnableJpaRepositories(basePackages = {
|
|
|
|
- "cn.com.qmth"})
|
|
|
|
|
|
+@ComponentScan(basePackages = { "com.qmth.commons", "cn.com.qmth" })
|
|
|
|
+@EntityScan(basePackages = { "com.qmth.commons", "cn.com.qmth" })
|
|
|
|
+@EnableJpaRepositories(basePackages = { "com.qmth.commons",
|
|
|
|
+ "cn.com.qmth" }, repositoryBaseClass = BaseQueryDaoImpl.class)
|
|
|
|
+@EnableMongoRepositories("cn.com.qmth.examcloud.core.questions.dao")
|
|
@SpringBootApplication
|
|
@SpringBootApplication
|
|
@EnableEurekaClient
|
|
@EnableEurekaClient
|
|
-@EnableFeignClients
|
|
|
|
-@EnableDiscoveryClient
|
|
|
|
-@EnableAutoConfiguration
|
|
|
|
|
|
+@EnableFeignClients(basePackages = { "cn.com.qmth.examcloud.core.questions.service.rpc" })
|
|
|
|
+@EnableAutoConfiguration(exclude = { MultipartAutoConfiguration.class })
|
|
public class Application {
|
|
public class Application {
|
|
|
|
|
|
- @Autowired
|
|
|
|
- GridFSUtil gridFSUtil;
|
|
|
|
-
|
|
|
|
- public static void main(String[] args) {
|
|
|
|
- SpringApplication.run(Application.class, args);
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- // 显示声明CommonsMultipartResolver为mutipartResolver
|
|
|
|
- @Bean(name = "multipartResolver")
|
|
|
|
- public MultipartResolver multipartResolver() {
|
|
|
|
- CommonsMultipartResolver resolver = new CommonsMultipartResolver();
|
|
|
|
- resolver.setDefaultEncoding("UTF-8");
|
|
|
|
- resolver.setResolveLazily(true);// resolveLazily属性启用是为了推迟文件解析,以在在UploadAction中捕获文件大小异常
|
|
|
|
- resolver.setMaxInMemorySize(40960);
|
|
|
|
- resolver.setMaxUploadSize(200 * 1024 * 1024);// 上传文件大小 50M 50*1024*1024
|
|
|
|
- return resolver;
|
|
|
|
- }
|
|
|
|
|
|
+ private static final ExamCloudLog LOG = ExamCloudLogFactory.getLog(Application.class);
|
|
|
|
+ @Autowired
|
|
|
|
+ GridFSUtil gridFSUtil;
|
|
|
|
+
|
|
|
|
+ public static void main(String[] args) {
|
|
|
|
+ if (LOG instanceof SLF4JImpl) {
|
|
|
|
+ MDC.put("TRACE_ID", Thread.currentThread().getName());
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ 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")
|
|
|
|
+ public MultipartResolver multipartResolver() {
|
|
|
|
+ CommonsMultipartResolver resolver = new CommonsMultipartResolver();
|
|
|
|
+ resolver.setDefaultEncoding("UTF-8");
|
|
|
|
+ resolver.setResolveLazily(true);
|
|
|
|
+ resolver.setMaxInMemorySize(40960);
|
|
|
|
+ resolver.setMaxUploadSize(200 * 1024 * 1024);
|
|
|
|
+ return resolver;
|
|
|
|
+ }
|
|
}
|
|
}
|