From ca9817461a504049e289c154939454a6e5a37089 Mon Sep 17 00:00:00 2001 From: 13693261870 <252740454@qq.com> Date: 星期三, 28 九月 2022 09:13:19 +0800 Subject: [PATCH] 1 --- /dev/null | 18 --- .gitignore | 1 src/main/java/com/lf/server/config/RestTemplateConfig.java | 98 ++++++++++++++++ src/main/resources/logback-spring.xml | 106 +++++++++++++++++ src/main/java/com/lf/server/config/ShiroConfig.java | 2 src/main/java/com/lf/server/aspect/LogAspect.java | 79 +++++++++++++ pom.xml | 5 src/main/java/com/lf/server/config/PropertiesConfig.java | 11 + src/main/resources/application.yml | 22 +++ 9 files changed, 322 insertions(+), 20 deletions(-) diff --git a/.gitignore b/.gitignore index 67a2fab..3d6a2f0 100644 --- a/.gitignore +++ b/.gitignore @@ -32,3 +32,4 @@ ### VS Code ### .vscode/ /data/*.backup +/src.zip diff --git a/pom.xml b/pom.xml index 63b73f7..21222c2 100644 --- a/pom.xml +++ b/pom.xml @@ -148,6 +148,11 @@ <artifactId>springfox-swagger-ui</artifactId> <version>2.9.2</version> </dependency> + <!-- httpclient --> + <dependency> + <groupId>org.apache.httpcomponents</groupId> + <artifactId>httpclient</artifactId> + </dependency> <!--<dependency> <groupId>org.thymeleaf.extras</groupId> <artifactId>thymeleaf-extras-springsecurity5</artifactId> diff --git a/src/main/java/com/lf/server/aspect/LogAspect.java b/src/main/java/com/lf/server/aspect/LogAspect.java new file mode 100644 index 0000000..2bfd023 --- /dev/null +++ b/src/main/java/com/lf/server/aspect/LogAspect.java @@ -0,0 +1,79 @@ +package com.lf.server.aspect; + +import org.apache.shiro.SecurityUtils; +import org.aspectj.lang.ProceedingJoinPoint; +import org.aspectj.lang.annotation.Around; +import org.aspectj.lang.annotation.Aspect; +import org.aspectj.lang.annotation.Pointcut; +import org.aspectj.lang.reflect.MethodSignature; +import org.springframework.stereotype.Component; + +import javax.servlet.http.HttpServletRequest; +import java.lang.reflect.Method; + +/** + * LogAspect + * @author WWW + */ +@Aspect +@Component +public class LogAspect { + @Pointcut("") + public void logPointCut() { + + } + + @Around("logPointCut()") + public Object around(ProceedingJoinPoint point) throws Throwable { + long beginTime = System.currentTimeMillis(); + //鎵ц鏂规硶 + Object result = point.proceed(); + //鎵ц鏃堕暱(姣) + long time = System.currentTimeMillis() - beginTime; + //System.out.println("time"+time); + + //淇濆瓨鏃ュ織 + saveLogAction(point, time); + + return result; + } + + private void saveLogAction(ProceedingJoinPoint joinPoint, long time) { + MethodSignature signature = (MethodSignature) joinPoint.getSignature(); + Method method = signature.getMethod(); + /*LogAction logAction = new LogAction(); + com.landtool.lanbase.common.annotation.LogAction log = method.getAnnotation(com.landtool.lanbase.common.annotation.LogAction.class); + if(log != null){ + //娉ㄨВ涓婄殑鎻忚堪 + String[] list = log.value().split(","); + logAction.setLargemodel(list[0]); //澶фā鍧� + logAction.setSmallmodel(list[1]);//灏忔ā鍧� + logAction.setRemark(list[2]); //澶囨敞 + logAction.setActiontype(list[3]);//鎿嶄綔绫诲瀷 + +// logAction.setRemark(log.value()); +// logAction.setActiontype(log.value()); + } + + //鑾峰彇request + HttpServletRequest request = HttpContextUtils.getHttpServletRequest(); + String url=request.getServletPath(); + logAction.setRequesturl(url); + //璁剧疆IP鍦板潃 + logAction.setRequestip(IPUtils.getIpAddr(request)); + + //鐢ㄦ埛鍚� + Long userid = ((OrgUser) SecurityUtils.getSubject().getPrincipal()).getUserid(); + logAction.setUserid(userid); + + logAction.setAppid(loginConfig.getAppId()); + +// logAction.setLargemodel(loginConfig.getAppFullName()); + + + + + //淇濆瓨绯荤粺鏃ュ織 + logActionService.save(logAction);*/ + } +} diff --git a/src/main/java/com/lf/server/config/PropertiesConfig.java b/src/main/java/com/lf/server/config/PropertiesConfig.java index f5a1731..678cdf7 100644 --- a/src/main/java/com/lf/server/config/PropertiesConfig.java +++ b/src/main/java/com/lf/server/config/PropertiesConfig.java @@ -1,5 +1,6 @@ package com.lf.server.config; +import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Component; /** @@ -8,4 +9,14 @@ */ @Component public class PropertiesConfig { + @Value("${sys.path}") + private String path; + + public String getPath() { + return path; + } + + public void setPath(String path) { + this.path = path; + } } diff --git a/src/main/java/com/lf/server/config/RestTemplateConfig.java b/src/main/java/com/lf/server/config/RestTemplateConfig.java new file mode 100644 index 0000000..bd4dd3a --- /dev/null +++ b/src/main/java/com/lf/server/config/RestTemplateConfig.java @@ -0,0 +1,98 @@ +package com.lf.server.config; + +import org.apache.http.client.HttpClient; +import org.apache.http.impl.client.HttpClientBuilder; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; +import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.http.client.ClientHttpRequestFactory; +import org.springframework.http.client.HttpComponentsClientHttpRequestFactory; +import org.springframework.http.client.SimpleClientHttpRequestFactory; +import org.springframework.http.converter.HttpMessageConverter; +import org.springframework.http.converter.StringHttpMessageConverter; +import org.springframework.web.client.RestTemplate; + +import java.nio.charset.StandardCharsets; +import java.util.List; + +/** + * RestTemplateConfig + * @author WWW + */ +@Configuration +@ConditionalOnClass(value = {RestTemplate.class, HttpClient.class}) +public class RestTemplateConfig { + /** + * 杩炴帴姹犵殑鏈�澶ц繛鎺ユ暟榛樿涓�0 + */ + @Value("${remote.maxTotalConnect:0}") + private int maxTotalConnect; + + /** + * 鍗曚釜涓绘満鐨勬渶澶ц繛鎺ユ暟 + */ + @Value("${remote.maxConnectPerRoute:1000}") + private int maxConnectPerRoute; + + /** + * 杩炴帴瓒呮椂榛樿5s + */ + @Value("${remote.connectTimeout:5000}") + private int connectTimeout; + + /** + * 璇诲彇瓒呮椂榛樿30s + */ + @Value("${remote.readTimeout:30000}") + private int readTimeout; + + /** + * 鍒涘缓HTTP瀹㈡埛绔伐鍘� + * + * @return 瀹㈡埛绔伐鍘� + */ + private ClientHttpRequestFactory createFactory() { + if (this.maxTotalConnect <= 0) { + SimpleClientHttpRequestFactory factory = new SimpleClientHttpRequestFactory(); + factory.setConnectTimeout(this.connectTimeout); + factory.setReadTimeout(this.readTimeout); + return factory; + } + + HttpClient httpClient = HttpClientBuilder.create().setMaxConnTotal(this.maxTotalConnect).setMaxConnPerRoute(this.maxConnectPerRoute).build(); + HttpComponentsClientHttpRequestFactory factory = new HttpComponentsClientHttpRequestFactory(httpClient); + factory.setConnectTimeout(this.connectTimeout); + factory.setReadTimeout(this.readTimeout); + return factory; + } + + /** + * 鍒濆鍖朢estTemplate,骞跺姞鍏pring鐨凚ean宸ュ巶锛岀敱spring缁熶竴绠$悊 + * 蹇呴』鍔犳敞瑙LoadBalanced + * + * @return + */ + @Bean + @ConditionalOnMissingBean(RestTemplate.class) + public RestTemplate getRestTemplate() { + RestTemplate restTemplate = new RestTemplate(this.createFactory()); + List<HttpMessageConverter<?>> converterList = restTemplate.getMessageConverters(); + + // 閲嶆柊璁剧疆StringHttpMessageConverter瀛楃闆嗕负UTF-8锛岃В鍐充腑鏂囦贡鐮侀棶棰� + HttpMessageConverter<?> converterTarget = null; + for (HttpMessageConverter<?> item : converterList) { + if (StringHttpMessageConverter.class == item.getClass()) { + converterTarget = item; + break; + } + } + if (null != converterTarget) { + converterList.remove(converterTarget); + } + converterList.add(1, new StringHttpMessageConverter(StandardCharsets.UTF_8)); + + return restTemplate; + } +} diff --git a/src/main/java/com/lf/server/config/ShiroConfig.java b/src/main/java/com/lf/server/config/ShiroConfig.java index 2e87af7..ebe5401 100644 --- a/src/main/java/com/lf/server/config/ShiroConfig.java +++ b/src/main/java/com/lf/server/config/ShiroConfig.java @@ -21,7 +21,7 @@ /** * ShiroConfig - * @author + * @author WWW */ @SuppressWarnings("ALL") //@Configuration diff --git a/src/main/java/com/lf/server/config/WebMvcConfigurer.java b/src/main/java/com/lf/server/config/WebMvcConfigurer.java deleted file mode 100644 index 3227d18..0000000 --- a/src/main/java/com/lf/server/config/WebMvcConfigurer.java +++ /dev/null @@ -1,4 +0,0 @@ -package com.lf.server.config; - -public class WebMvcConfigurer { -} diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index 2ceed21..3a439ed 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -2,7 +2,10 @@ tomcat: uri-encoding: UTF-8 port: 12316 - context-path: /land + #servlet: + # context-path: /land + application: + name: land spring: datasource: @@ -34,7 +37,24 @@ port: 6379 password: database: 1 + jackson: + time-zone: GMT+8 + date-format: yyyy-MM-dd HH:mm:ss mybatis: type-aliases-package: com.terra.land.mapper mapper-locations: classpath:mapper/**/*.xml + +logging: + config: classpath:log/logback-spring.xml + +# RestTemplate config +remote: + maxTotalConnect: 0 + maxConnectPerRoute: 1000 + connectTimeout: 5000 + readTimeout: 30000 + +# 绯荤粺閰嶇疆 +sys: + path: E:\\Test\\LF\\ diff --git a/src/main/resources/log4j.properties b/src/main/resources/log4j.properties deleted file mode 100644 index 41827c3..0000000 --- a/src/main/resources/log4j.properties +++ /dev/null @@ -1,18 +0,0 @@ -log4j.rootLogger=INFO, stdout - -log4j.appender.stdout=org.apache.log4j.ConsoleAppender -log4j.appender.stdout.layout=org.apache.log4j.PatternLayout -log4j.appender.stdout.layout.ConversionPattern=%d %p [%c] - %m %n - -# General Apache libraries -log4j.logger.org.apache=WARN - -# Spring -log4j.logger.org.springframework=WARN - -# Default Shiro logging -log4j.logger.org.apache.shiro=INFO - -# Disable verbose logging -log4j.logger.org.apache.shiro.util.ThreadContext=WARN -log4j.logger.org.apache.shiro.cache.ehcache.EhCache=WARN diff --git a/src/main/resources/logback-spring.xml b/src/main/resources/logback-spring.xml new file mode 100644 index 0000000..ef72342 --- /dev/null +++ b/src/main/resources/logback-spring.xml @@ -0,0 +1,106 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- scan 閰嶇疆鏂囦欢濡傛灉鍙戠敓鏀瑰彉锛屽皢浼氳閲嶆柊鍔犺浇 scanPeriod 妫�娴嬮棿闅旀椂闂�--> +<configuration scan="true" scanPeriod="60 seconds" debug="false"> + <contextName>jcpimserver</contextName> + + <!-- 鏂囦欢鍚嶇О --> + <property name="log.name.info" value="info" /> + <property name="log.name.error" value="error" /> + + <!-- info 鍦板潃 --> + <property name="log.path.info" value="logs/" /> + <property name="log.file.info" value="logs/info.log" /> + + <!-- errr,閿欒璺緞 --> + <property name="log.path.error" value="logs/" /> + <property name="log.file.error" value="logs/error.log" /> + + <include resource="org/springframework/boot/logging/logback/base.xml"/> + + <!-- 鏅�氭棩蹇� --> + <appender name="INFO_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> + <file>${log.file.info}</file> + <!-- 寰幆鏀跨瓥锛氬熀浜庢椂闂村垱寤烘棩蹇楁枃浠� --> + <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> + <!-- 鏃ュ織鍛藉悕:鍗曚釜鏂囦欢澶т簬256MB 鎸夌収鏃堕棿+鑷i 鐢熸垚log鏂囦欢 --> + <fileNamePattern>${log.path.info}${log.name.info}-%d{yyyy-MM-dd}.%i.log</fileNamePattern> + <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> + <maxFileSize>256MB</maxFileSize> + </timeBasedFileNamingAndTriggeringPolicy> + <!-- 鏈�澶т繚瀛樻椂闂达細30澶�--> + <maxHistory>30</maxHistory> + </rollingPolicy> + <append>true</append> + <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"> + <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level %logger Line:%-3L - %msg%n</pattern> + <charset>utf-8</charset> + </encoder> + <!-- 鏃ュ織绾у埆杩囨护鍣� --> + <filter class="ch.qos.logback.classic.filter.LevelFilter"> + <!-- 杩囨护鐨勭骇鍒� --> + <level>INFO</level> + <!-- 鍖归厤鏃剁殑鎿嶄綔锛氭帴鏀讹紙璁板綍锛� --> + <onMatch>ACCEPT</onMatch> + <!-- 涓嶅尮閰嶆椂鐨勬搷浣滐細鎷掔粷锛堜笉璁板綍锛� --> + <onMismatch>DENY</onMismatch> + </filter> + </appender> + + <!-- 閿欒鏃ュ織 --> + <appender name="ERROR_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> + <file>${log.file.error}</file> + <!-- 寰幆鏀跨瓥锛氬熀浜庢椂闂村垱寤烘棩蹇楁枃浠� --> + <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> + <!-- 鏃ュ織鍛藉悕:鍗曚釜鏂囦欢澶т簬128MB 鎸夌収鏃堕棿+鑷i 鐢熸垚log鏂囦欢 --> + <fileNamePattern>${log.path.error}${log.name.error}-%d{yyyy-MM-dd}.%i.log</fileNamePattern> + <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> + <maxFileSize>128MB</maxFileSize> + </timeBasedFileNamingAndTriggeringPolicy> + <!-- 鏈�澶т繚瀛樻椂闂达細180澶�--> + <maxHistory>180</maxHistory> + </rollingPolicy> + <append>true</append> + <!-- 鏃ュ織鏍煎紡 --> + <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"> + <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level %logger Line:%-3L - %msg%n</pattern> + <charset>utf-8</charset> + </encoder> + <!-- 鏃ュ織绾у埆杩囨护鍣� --> + <filter class="ch.qos.logback.classic.filter.LevelFilter"> + <!-- 杩囨护鐨勭骇鍒� --> + <level>ERROR</level> + <!-- 鍖归厤鏃剁殑鎿嶄綔锛氭帴鏀讹紙璁板綍锛� --> + <onMatch>ACCEPT</onMatch> + <!-- 涓嶅尮閰嶆椂鐨勬搷浣滐細鎷掔粷锛堜笉璁板綍锛� --> + <onMismatch>DENY</onMismatch> + </filter> + </appender> + + <!-- 鎺у埗鍙� --> + <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> + <!-- 鏃ュ織鏍煎紡 --> + <encoder> + <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level %logger Line:%-3L - %msg%n</pattern> + <charset>utf-8</charset> + </encoder> + <!--姝ゆ棩蹇梐ppender鏄负寮�鍙戜娇鐢紝鍙厤缃渶搴曠骇鍒紝鎺у埗鍙拌緭鍑虹殑鏃ュ織绾у埆鏄ぇ浜庢垨绛変簬姝ょ骇鍒殑鏃ュ織淇℃伅--> + <filter class="ch.qos.logback.classic.filter.ThresholdFilter"> + <!-- 鍙湁杩欎釜鏃ュ織鏉冮檺鎵嶈兘鐪嬶紝sql璇彞 --> + <level>DEBUG</level> + </filter> + </appender> + + <!-- 杈撳嚭sql鏃ュ織 --> + <logger name="com.apache.ibatis" level="DEBUG"></logger> + + <!-- additivity:鏄惁鍦ㄧ埗(杩欓噷涓簉oot鑺傜偣)杈撳嚭, 榛樿 true; --> + <logger name="com.jcpim" level="INFO" additivity="true"> + <appender-ref ref="INFO_FILE"/> + <appender-ref ref="ERROR_FILE"/> + </logger> + + <root level="INFO"> + <appender-ref ref="STDOUT" /> + </root> + +</configuration> -- Gitblit v1.9.3