管道基础大数据平台系统开发-【后端】-Server
1
13693261870
2022-09-27 5bc904db9ae6ca87a16edcfb924bcf9e80b19309
1
已添加3个文件
已修改4个文件
165 ■■■■ 文件已修改
src/main/java/com/lf/server/LfApplication.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/lf/server/config/PropertiesConfig.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/lf/server/config/RedisConfig.java 94 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/lf/server/config/WebConfig.java 26 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/lf/server/config/WebMvcConfigurer.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/lf/server/interceptor/CrosFilter.java 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/application.yml 17 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/lf/server/LfApplication.java
@@ -3,14 +3,15 @@
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.web.servlet.ServletComponentScan;
import springfox.documentation.swagger2.annotations.EnableSwagger2;
/**
 * LandApplication
 * @author
 */
@SpringBootApplication(scanBasePackages={"com.lf.server.controller", "com.lf.server.service"})
@EnableSwagger2
@SpringBootApplication(scanBasePackages={"com.lf.server.config", "com.lf.server.mapper", "com.lf.server.service","com.lf.server.controller"})
public class LfApplication {
    public static void main(String[] args) {
        SpringApplication.run(LfApplication.class, args);
src/main/java/com/lf/server/config/PropertiesConfig.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,11 @@
package com.lf.server.config;
import org.springframework.stereotype.Component;
/**
 * å±žæ€§é…ç½®ç±»
 * @author WWW
 */
@Component
public class PropertiesConfig {
}
src/main/java/com/lf/server/config/RedisConfig.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,94 @@
package com.lf.server.config;
import com.fasterxml.jackson.annotation.JsonAutoDetect;
import com.fasterxml.jackson.annotation.PropertyAccessor;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.springframework.boot.autoconfigure.AutoConfigureAfter;
import org.springframework.boot.autoconfigure.data.redis.RedisAutoConfiguration;
import org.springframework.cache.Cache;
import org.springframework.cache.annotation.CachingConfigurerSupport;
import org.springframework.cache.interceptor.CacheErrorHandler;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
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 java.util.HashMap;
import java.util.Map;
/**
 * RedisConfig
 * @author WWW
 */
@Configuration
@AutoConfigureAfter(RedisAutoConfiguration.class)
public class RedisConfig extends CachingConfigurerSupport {
    /**
     * é…ç½®è‡ªå®šä¹‰redisTemplate
     */
    @SuppressWarnings("deprecation")
    @Bean
    public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory redisConnectionFactory) {
        RedisTemplate<String, Object> template = new RedisTemplate<>();
        template.setConnectionFactory(redisConnectionFactory);
        // ä½¿ç”¨Jackson2JsonRedisSerializer来序列化和反序列化redis的value值
        Jackson2JsonRedisSerializer<Object> serializer = new Jackson2JsonRedisSerializer<Object>(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.setHashKeySerializer(new StringRedisSerializer());
        template.setHashValueSerializer(serializer);
        template.afterPropertiesSet();
        return template;
    }
    @Bean
    @Override
    public CacheErrorHandler errorHandler() {
        // å¼‚常处理,当Redis发生异常时,打印日志,但是程序正常走
        return new CacheErrorHandler() {
            @Override
            public void handleCacheGetError(RuntimeException e, Cache cache, Object key) {
                Map<String, Object> error = new HashMap<String, Object>(3);
                error.put("e", e);
                error.put("cache", cache);
                error.put("key", key);
            }
            @Override
            public void handleCachePutError(RuntimeException e, Cache cache, Object key, Object value) {
                Map<String, Object> error = new HashMap<String, Object>(4);
                error.put("e", e);
                error.put("cache", cache);
                error.put("key", key);
                error.put("value", value);
            }
            @Override
            public void handleCacheEvictError(RuntimeException e, Cache cache, Object key) {
                Map<String, Object> error = new HashMap<String, Object>(3);
                error.put("e", e);
                error.put("cache", cache);
                error.put("key", key);
            }
            @Override
            public void handleCacheClearError(RuntimeException e, Cache cache) {
                Map<String, Object> error = new HashMap<String, Object>(2);
                error.put("e", e);
                error.put("cache", cache);
            }
        };
    }
}
src/main/java/com/lf/server/config/WebConfig.java
@@ -3,20 +3,19 @@
import com.alibaba.fastjson.serializer.SerializerFeature;
import com.alibaba.fastjson.support.config.FastJsonConfig;
import com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.MediaType;
import org.springframework.http.converter.HttpMessageConverter;
import org.springframework.stereotype.Component;
import org.springframework.util.AntPathMatcher;
import org.springframework.web.servlet.config.annotation.*;
import java.util.ArrayList;
import java.nio.charset.Charset;
import java.util.List;
/**
 * WebConfig
 * @author WWW
 */
@Configuration
@Component
public class WebConfig extends WebMvcConfigurationSupport {
    /**
     * swagger控制
@@ -44,11 +43,11 @@
    @Override
    protected void addCorsMappings(CorsRegistry registry) {
        registry.addMapping("/**")
                .allowCredentials(true)
                .allowedOrigins("*")
                .allowedMethods("GET", "POST", "PUT", "DELETE", "OPTIONS")
                .allowedHeaders("*")
                .allowedMethods("POST", "GET", "PUT", "OPTIONS", "DELETE")
                .maxAge(3600)
                .allowCredentials(true);
                .maxAge(3600);
    }
    /**
@@ -65,19 +64,18 @@
    @Override
    public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
        FastJsonHttpMessageConverter converter = new FastJsonHttpMessageConverter();
        FastJsonConfig fastJsonConfig = new FastJsonConfig();
        fastJsonConfig.setSerializerFeatures(
        FastJsonConfig config = new FastJsonConfig();
        config.setSerializerFeatures(
                SerializerFeature.WriteNullListAsEmpty,
                SerializerFeature.WriteMapNullValue,
                SerializerFeature.WriteNullStringAsEmpty,
                //SerializerFeature.WriteNullStringAsEmpty,
                SerializerFeature.WriteNullNumberAsZero,
                SerializerFeature.WriteNullBooleanAsFalse);
        // ç»“果是否格式化,默认为false
        //SerializerFeature.PrettyFormat);
        List<MediaType> fastMediaTypes = new ArrayList<>();
        converter.setSupportedMediaTypes(fastMediaTypes);
        converter.setFastJsonConfig(fastJsonConfig);
        converter.setFastJsonConfig(config);
        converter.setDefaultCharset(Charset.forName("UTF-8"));
        converters.add(converter);
    }
}
src/main/java/com/lf/server/config/WebMvcConfigurer.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,4 @@
package com.lf.server.config;
public class WebMvcConfigurer {
}
src/main/java/com/lf/server/interceptor/CrosFilter.java
@@ -1,11 +1,11 @@
package com.lf.server.interceptor;
import org.springframework.stereotype.Component;
import javax.servlet.*;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
/**
 * è·¨åŸŸè¿‡æ»¤
@@ -22,19 +22,19 @@
    }
    @Override
    public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws IOException, ServletException {
        HttpServletResponse response = (HttpServletResponse) resp;
    public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException {
        HttpServletResponse response = (HttpServletResponse) res;
        HttpServletRequest request = (HttpServletRequest) req;
        if (OPTIONS.equalsIgnoreCase(request.getMethod())) {
            response.setHeader("Access-Control-Allow-Origin", "*");
            response.setHeader("Access-Control-Allow-Credentials", "true");
            response.setHeader("Access-Control-Allow-Methods", "GET, HEAD, POST, PUT, PATCH, DELETE, OPTIONS");
            response.setHeader("Access-Control-Max-Age", "86400");
            response.setHeader("Access-Control-Max-Age", "3600");
            response.setHeader("Access-Control-Allow-Headers", "*");
            response.setStatus(HttpServletResponse.SC_OK);
        } else {
            chain.doFilter(req, resp);
            chain.doFilter(req, res);
        }
    }
src/main/resources/application.yml
@@ -1,8 +1,6 @@
server:
  tomcat:
    uri-encoding: UTF-8
    max-threads: 1000
    min-spare-threads: 5
  port: 12316
  context-path: /land
@@ -13,8 +11,6 @@
    url : jdbc:postgresql://192.168.20.39:5433/langfang
    driver-class-name: org.postgresql.Driver
    type: com.alibaba.druid.pool.DruidDataSource # è‡ªå®šä¹‰æ•°æ®æº
    #url : jdbc:postgresql://127.0.0.1:5433/postgres
    #Spring Boot é»˜è®¤æ˜¯ä¸æ³¨å…¥è¿™äº›å±žæ€§å€¼çš„,需要自己绑定
    #druid æ•°æ®æºä¸“有配置
    initialSize: 5
    minIdle: 5
@@ -27,20 +23,17 @@
    testOnBorrow: false
    testOnReturn: false
    poolPreparedStatements: true
    #配置监控统计拦截的filters,stat:监控统计、log4j:日志记录、wall:防御sql注入
    #如果允许时报错  java.lang.ClassNotFoundException: org.apache.log4j.Priority
    #则导入 log4j ä¾èµ–即可,Maven åœ°å€ï¼šhttps://mvnrepository.com/artifact/log4j/log4j
    filters: stat,wall,log4j
    maxPoolPreparedStatementPerConnectionSize: 20
    useGlobalDataSourceStat: true
    connectionProperties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=500
#ojdbc:
#  jdbcUrl: jdbc:postgresql://192.168.20.106:5432/langfang
#  driverclass: org.postgresql.Driver
#  username: postgres
#  password: postgres
    redis:
      host: 192.168.20.39
      port: 6379
      password:
      database: 1
mybatis:
  type-aliases-package: com.terra.land.mapper