10 changed files with 482 additions and 0 deletions
			
			
		@ -0,0 +1,107 @@ | 
				
			|||||
 | 
					<?xml version="1.0" encoding="UTF-8"?> | 
				
			||||
 | 
					<project xmlns="http://maven.apache.org/POM/4.0.0" | 
				
			||||
 | 
					         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" | 
				
			||||
 | 
					         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    <properties> | 
				
			||||
 | 
					        <maven.compiler.source>8</maven.compiler.source> | 
				
			||||
 | 
					        <maven.compiler.target>8</maven.compiler.target> | 
				
			||||
 | 
					        <spring-boot.version>2.1.8.RELEASE</spring-boot.version> | 
				
			||||
 | 
					        <spring-cloud.version>Greenwich.SR3</spring-cloud.version> | 
				
			||||
 | 
					        <spring-cloud-alibaba.version>2.1.0.RELEASE</spring-cloud-alibaba.version> | 
				
			||||
 | 
					        <java.version>1.8</java.version> | 
				
			||||
 | 
					        <slf4j.version>1.7.25</slf4j.version> | 
				
			||||
 | 
					        <log4j2.version>2.12.0</log4j2.version> | 
				
			||||
 | 
					        <log4j.version>1.2.17</log4j.version> | 
				
			||||
 | 
					        <slf4j-log4j12.version>1.6.1</slf4j-log4j12.version> | 
				
			||||
 | 
					        <dubbo.version>2.7.6</dubbo.version> | 
				
			||||
 | 
					        <dubbox.version>2.8.4</dubbox.version> | 
				
			||||
 | 
					        <curator.version>4.0.1</curator.version> | 
				
			||||
 | 
					        <zk.version>3.4.6</zk.version> | 
				
			||||
 | 
					        <zkclient.version>0.1</zkclient.version> | 
				
			||||
 | 
					        <tlog-example-api.version>1.0.0</tlog-example-api.version> | 
				
			||||
 | 
					        <tlog.version>1.5.0</tlog.version> | 
				
			||||
 | 
					    </properties> | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    <modelVersion>4.0.0</modelVersion> | 
				
			||||
 | 
					    <groupId>com.yomahub.tlog.example</groupId> | 
				
			||||
 | 
					    <artifactId>tlog-example-logback-feign-consumer</artifactId> | 
				
			||||
 | 
					    <version>1.0</version> | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    <dependencies> | 
				
			||||
 | 
					        <dependency> | 
				
			||||
 | 
					            <groupId>org.springframework.boot</groupId> | 
				
			||||
 | 
					            <artifactId>spring-boot-starter-web</artifactId> | 
				
			||||
 | 
					        </dependency> | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					        <dependency> | 
				
			||||
 | 
					            <groupId>org.springframework.cloud</groupId> | 
				
			||||
 | 
					            <artifactId>spring-cloud-starter-openfeign</artifactId> | 
				
			||||
 | 
					        </dependency> | 
				
			||||
 | 
					        <dependency> | 
				
			||||
 | 
					            <groupId>org.springframework.boot</groupId> | 
				
			||||
 | 
					            <artifactId>spring-boot-starter-logging</artifactId> | 
				
			||||
 | 
					        </dependency> | 
				
			||||
 | 
					        <dependency> | 
				
			||||
 | 
					            <groupId>com.alibaba.cloud</groupId> | 
				
			||||
 | 
					            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> | 
				
			||||
 | 
					        </dependency> | 
				
			||||
 | 
					        <dependency> | 
				
			||||
 | 
					            <groupId>com.yomahub</groupId> | 
				
			||||
 | 
					            <artifactId>tlog-feign-spring-boot-starter</artifactId> | 
				
			||||
 | 
					            <version>${tlog.version}</version> | 
				
			||||
 | 
					        </dependency> | 
				
			||||
 | 
					        <dependency> | 
				
			||||
 | 
					            <groupId>com.yomahub</groupId> | 
				
			||||
 | 
					            <artifactId>tlog-web-spring-boot-starter</artifactId> | 
				
			||||
 | 
					            <version>${tlog.version}</version> | 
				
			||||
 | 
					        </dependency> | 
				
			||||
 | 
					        <dependency> | 
				
			||||
 | 
					            <groupId>org.projectlombok</groupId> | 
				
			||||
 | 
					            <artifactId>lombok</artifactId> | 
				
			||||
 | 
					        </dependency> | 
				
			||||
 | 
					    </dependencies> | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    <dependencyManagement> | 
				
			||||
 | 
					        <dependencies> | 
				
			||||
 | 
					            <!-- springboot的依赖 --> | 
				
			||||
 | 
					            <dependency> | 
				
			||||
 | 
					                <groupId>org.springframework.boot</groupId> | 
				
			||||
 | 
					                <artifactId>spring-boot-dependencies</artifactId> | 
				
			||||
 | 
					                <version>${spring-boot.version}</version> | 
				
			||||
 | 
					                <type>pom</type> | 
				
			||||
 | 
					                <scope>import</scope> | 
				
			||||
 | 
					            </dependency> | 
				
			||||
 | 
					            <!-- springCloud的依赖 --> | 
				
			||||
 | 
					            <dependency> | 
				
			||||
 | 
					                <groupId>org.springframework.cloud</groupId> | 
				
			||||
 | 
					                <artifactId>spring-cloud-dependencies</artifactId> | 
				
			||||
 | 
					                <version>${spring-cloud.version}</version> | 
				
			||||
 | 
					                <type>pom</type> | 
				
			||||
 | 
					                <scope>import</scope> | 
				
			||||
 | 
					            </dependency> | 
				
			||||
 | 
					            <dependency> | 
				
			||||
 | 
					                <groupId>com.alibaba.cloud</groupId> | 
				
			||||
 | 
					                <artifactId>spring-cloud-alibaba-dependencies</artifactId> | 
				
			||||
 | 
					                <version>${spring-cloud-alibaba.version}</version> | 
				
			||||
 | 
					                <type>pom</type> | 
				
			||||
 | 
					                <scope>import</scope> | 
				
			||||
 | 
					            </dependency> | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					            <!-- log4j的依赖 --> | 
				
			||||
 | 
					            <dependency> | 
				
			||||
 | 
					                <groupId>log4j</groupId> | 
				
			||||
 | 
					                <artifactId>log4j</artifactId> | 
				
			||||
 | 
					                <version>${log4j.version}</version> | 
				
			||||
 | 
					            </dependency> | 
				
			||||
 | 
					            <dependency> | 
				
			||||
 | 
					                <groupId>org.slf4j</groupId> | 
				
			||||
 | 
					                <artifactId>slf4j-api</artifactId> | 
				
			||||
 | 
					                <version>${slf4j.version}</version> | 
				
			||||
 | 
					            </dependency> | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					        </dependencies> | 
				
			||||
 | 
					    </dependencyManagement> | 
				
			||||
 | 
					</project> | 
				
			||||
@ -0,0 +1,19 @@ | 
				
			|||||
 | 
					package com.yomahub.tlog.example.feign; | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					import org.springframework.boot.SpringApplication; | 
				
			||||
 | 
					import org.springframework.boot.autoconfigure.SpringBootApplication; | 
				
			||||
 | 
					import org.springframework.cloud.client.discovery.EnableDiscoveryClient; | 
				
			||||
 | 
					import org.springframework.cloud.openfeign.EnableFeignClients; | 
				
			||||
 | 
					import org.springframework.scheduling.annotation.EnableAsync; | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					@SpringBootApplication | 
				
			||||
 | 
					@EnableFeignClients | 
				
			||||
 | 
					@EnableDiscoveryClient | 
				
			||||
 | 
					@EnableAsync | 
				
			||||
 | 
					public class TLogFeignConsumerRunner { | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    public static void main(String[] args) { | 
				
			||||
 | 
					        SpringApplication.run(TLogFeignConsumerRunner.class, args); | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    } | 
				
			||||
 | 
					} | 
				
			||||
@ -0,0 +1,26 @@ | 
				
			|||||
 | 
					package com.yomahub.tlog.example.feign.annotation; | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					import com.fasterxml.jackson.annotation.JacksonAnnotationsInside; | 
				
			||||
 | 
					import com.fasterxml.jackson.databind.annotation.JsonSerialize; | 
				
			||||
 | 
					import com.yomahub.tlog.example.feign.configuration.SensitiveJsonSerializer; | 
				
			||||
 | 
					import com.yomahub.tlog.example.feign.enumnew.SensitiveStrategy; | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					import java.lang.annotation.ElementType; | 
				
			||||
 | 
					import java.lang.annotation.Retention; | 
				
			||||
 | 
					import java.lang.annotation.RetentionPolicy; | 
				
			||||
 | 
					import java.lang.annotation.Target; | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					/** | 
				
			||||
 | 
					 * 接口返回数据如何优雅的实现脱敏? | 
				
			||||
 | 
					 * @className: Sensitive | 
				
			||||
 | 
					 * @author: woniu | 
				
			||||
 | 
					 * @date: 2023/3/8 | 
				
			||||
 | 
					 **/ | 
				
			||||
 | 
					@Retention(RetentionPolicy.RUNTIME) | 
				
			||||
 | 
					@Target(ElementType.FIELD) | 
				
			||||
 | 
					@JacksonAnnotationsInside | 
				
			||||
 | 
					@JsonSerialize(using = SensitiveJsonSerializer.class) | 
				
			||||
 | 
					public @interface Sensitive { | 
				
			||||
 | 
					    //脱敏策略
 | 
				
			||||
 | 
					    SensitiveStrategy strategy(); | 
				
			||||
 | 
					} | 
				
			||||
@ -0,0 +1,42 @@ | 
				
			|||||
 | 
					package com.yomahub.tlog.example.feign.configuration; | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					import com.fasterxml.jackson.core.JsonGenerator; | 
				
			||||
 | 
					import com.fasterxml.jackson.databind.BeanProperty; | 
				
			||||
 | 
					import com.fasterxml.jackson.databind.JsonMappingException; | 
				
			||||
 | 
					import com.fasterxml.jackson.databind.JsonSerializer; | 
				
			||||
 | 
					import com.fasterxml.jackson.databind.SerializerProvider; | 
				
			||||
 | 
					import com.fasterxml.jackson.databind.ser.ContextualSerializer; | 
				
			||||
 | 
					import com.yomahub.tlog.example.feign.annotation.Sensitive; | 
				
			||||
 | 
					import com.yomahub.tlog.example.feign.enumnew.SensitiveStrategy; | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					import java.io.IOException; | 
				
			||||
 | 
					import java.util.Objects; | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					/** | 
				
			||||
 | 
					 * 序列化注解自定义实现 | 
				
			||||
 | 
					 * JsonSerializer<String>:指定String 类型,serialize()方法用于将修改后的数据载入 | 
				
			||||
 | 
					 */ | 
				
			||||
 | 
					public class SensitiveJsonSerializer extends JsonSerializer<String> implements ContextualSerializer { | 
				
			||||
 | 
					    private SensitiveStrategy strategy; | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    @Override | 
				
			||||
 | 
					    public void serialize(String value, JsonGenerator gen, SerializerProvider serializers) throws IOException { | 
				
			||||
 | 
					        gen.writeString(strategy.desensitizer().apply(value)); | 
				
			||||
 | 
					    } | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    /** | 
				
			||||
 | 
					     * 获取属性上的注解属性 | 
				
			||||
 | 
					     */ | 
				
			||||
 | 
					    @Override | 
				
			||||
 | 
					    public JsonSerializer<?> createContextual(SerializerProvider prov, BeanProperty property) throws JsonMappingException { | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					        Sensitive annotation = property.getAnnotation(Sensitive.class); | 
				
			||||
 | 
					        if (Objects.nonNull(annotation) && Objects.equals(String.class, property.getType().getRawClass())) { | 
				
			||||
 | 
					            this.strategy = annotation.strategy(); | 
				
			||||
 | 
					            return this; | 
				
			||||
 | 
					        } | 
				
			||||
 | 
					        return prov.findValueSerializer(property.getType(), property); | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    } | 
				
			||||
 | 
					} | 
				
			||||
@ -0,0 +1,20 @@ | 
				
			|||||
 | 
					package com.yomahub.tlog.example.feign.controller; | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					import com.yomahub.tlog.example.feign.entity.Person; | 
				
			||||
 | 
					import org.springframework.web.bind.annotation.GetMapping; | 
				
			||||
 | 
					import org.springframework.web.bind.annotation.RestController; | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					@RestController | 
				
			||||
 | 
					public class TestController { | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    @GetMapping("/test") | 
				
			||||
 | 
					    public Person test() { | 
				
			||||
 | 
					        Person user = new Person(); | 
				
			||||
 | 
					        user.setRealName("蜗牛"); | 
				
			||||
 | 
					        user.setPhoneNumber("1685935467874"); | 
				
			||||
 | 
					        user.setAddress("江苏省南京市...."); | 
				
			||||
 | 
					        user.setIdCard("4333333333334334333"); | 
				
			||||
 | 
					        return user; | 
				
			||||
 | 
					    } | 
				
			||||
 | 
					} | 
				
			||||
@ -0,0 +1,30 @@ | 
				
			|||||
 | 
					package com.yomahub.tlog.example.feign.entity; | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					import com.yomahub.tlog.example.feign.annotation.Sensitive; | 
				
			||||
 | 
					import com.yomahub.tlog.example.feign.enumnew.SensitiveStrategy; | 
				
			||||
 | 
					import lombok.Data; | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					@Data | 
				
			||||
 | 
					public class Person { | 
				
			||||
 | 
					    /** | 
				
			||||
 | 
					     * 真实姓名 | 
				
			||||
 | 
					     */ | 
				
			||||
 | 
					    @Sensitive(strategy = SensitiveStrategy.USERNAME) | 
				
			||||
 | 
					    private String realName; | 
				
			||||
 | 
					    /** | 
				
			||||
 | 
					     * 地址 | 
				
			||||
 | 
					     */ | 
				
			||||
 | 
					    @Sensitive(strategy = SensitiveStrategy.ADDRESS) | 
				
			||||
 | 
					    private String address; | 
				
			||||
 | 
					    /** | 
				
			||||
 | 
					     * 电话号码 | 
				
			||||
 | 
					     */ | 
				
			||||
 | 
					    @Sensitive(strategy = SensitiveStrategy.PHONE) | 
				
			||||
 | 
					    private String phoneNumber; | 
				
			||||
 | 
					    /** | 
				
			||||
 | 
					     * 身份证号码 | 
				
			||||
 | 
					     */ | 
				
			||||
 | 
					    @Sensitive(strategy = SensitiveStrategy.ID_CARD) | 
				
			||||
 | 
					    private String idCard; | 
				
			||||
 | 
					} | 
				
			||||
@ -0,0 +1,36 @@ | 
				
			|||||
 | 
					package com.yomahub.tlog.example.feign.enumnew; | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					import java.util.function.Function; | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					/** | 
				
			||||
 | 
					 * 脱敏策略,枚举类,针对不同的数据定制特定的策略 | 
				
			||||
 | 
					 */ | 
				
			||||
 | 
					public enum SensitiveStrategy { | 
				
			||||
 | 
					    /** | 
				
			||||
 | 
					     * 用户名 | 
				
			||||
 | 
					     */ | 
				
			||||
 | 
					    USERNAME(s -> s.replaceAll("(\\S)\\S(\\S*)", "$1*$2")), | 
				
			||||
 | 
					    /** | 
				
			||||
 | 
					     * 身份证 | 
				
			||||
 | 
					     */ | 
				
			||||
 | 
					    ID_CARD(s -> s.replaceAll("(\\d{4})\\d{10}(\\w{4})", "$1****$2")), | 
				
			||||
 | 
					    /** | 
				
			||||
 | 
					     * 手机号 | 
				
			||||
 | 
					     */ | 
				
			||||
 | 
					    PHONE(s -> s.replaceAll("(\\d{3})\\d{4}(\\d{4})", "$1****$2")), | 
				
			||||
 | 
					    /** | 
				
			||||
 | 
					     * 地址 | 
				
			||||
 | 
					     */ | 
				
			||||
 | 
					    ADDRESS(s -> s.replaceAll("(\\S{3})\\S{2}(\\S*)\\S{2}", "$1****$2****")); | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    private final Function<String, String> desensitizer; | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    SensitiveStrategy(Function<String, String> desensitizer) { | 
				
			||||
 | 
					        this.desensitizer = desensitizer; | 
				
			||||
 | 
					    } | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    public Function<String, String> desensitizer() { | 
				
			||||
 | 
					        return desensitizer; | 
				
			||||
 | 
					    } | 
				
			||||
 | 
					} | 
				
			||||
@ -0,0 +1,14 @@ | 
				
			|||||
 | 
					spring.application.name=tlog-logback-feign-consumer | 
				
			||||
 | 
					server.port=3111 | 
				
			||||
 | 
					#eureka.client.service-url.defaultZone=http://127.0.0.1:1111/eureka/ | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					tlog.pattern=[$currIp][$spanId][$traceId] | 
				
			||||
 | 
					spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848 | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					http.connectTimeOutMillis=8000 | 
				
			||||
 | 
					http.readTimeOutMillis=8000 | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					spring.task.execution.pool.core-size=5 | 
				
			||||
 | 
					spring.task.execution.pool.max-size=50 | 
				
			||||
 | 
					spring.task.execution.pool.queue-capacity=200 | 
				
			||||
 | 
					spring.task.execution.thread-name-prefix=woniugege- | 
				
			||||
@ -0,0 +1,47 @@ | 
				
			|||||
 | 
					<?xml version="1.0" encoding="UTF-8"?> | 
				
			||||
 | 
					<!-- | 
				
			||||
 | 
					    Copyright 2010-2011 The myBatis Team | 
				
			||||
 | 
					    Licensed under the Apache License, Version 2.0 (the "License"); | 
				
			||||
 | 
					    you may not use this file except in compliance with the License. | 
				
			||||
 | 
					    You may obtain a copy of the License at | 
				
			||||
 | 
					        http://www.apache.org/licenses/LICENSE-2.0 | 
				
			||||
 | 
					    Unless required by applicable law or agreed to in writing, software | 
				
			||||
 | 
					    distributed under the License is distributed on an "AS IS" BASIS, | 
				
			||||
 | 
					    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | 
				
			||||
 | 
					    See the License for the specific language governing permissions and | 
				
			||||
 | 
					    limitations under the License. | 
				
			||||
 | 
					--> | 
				
			||||
 | 
					<configuration debug="false"> | 
				
			||||
 | 
					    <!--定义日志文件的存储地址 勿在 LogBack 的配置中使用相对路径--> | 
				
			||||
 | 
					    <property name="APP_NAME" value="tlog-logback-feign-consumer"/> | 
				
			||||
 | 
					    <property name="LOG_HOME" value="./logs" /> | 
				
			||||
 | 
					    <!-- 控制台输出 --> | 
				
			||||
 | 
					    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> | 
				
			||||
 | 
					        <encoder class="com.yomahub.tlog.core.enhance.logback.AspectLogbackEncoder"> | 
				
			||||
 | 
					            <!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符--> | 
				
			||||
 | 
					            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern> | 
				
			||||
 | 
					        </encoder> | 
				
			||||
 | 
					    </appender> | 
				
			||||
 | 
					    <!-- 按照每天生成日志文件 --> | 
				
			||||
 | 
					    <appender name="FILE"  class="ch.qos.logback.core.rolling.RollingFileAppender"> | 
				
			||||
 | 
					        <File>${LOG_HOME}/${APP_NAME}.log</File> | 
				
			||||
 | 
					        <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"> | 
				
			||||
 | 
					            <!--日志文件输出的文件名--> | 
				
			||||
 | 
					            <FileNamePattern>${LOG_HOME}/${APP_NAME}.log.%d{yyyy-MM-dd}.%i.log</FileNamePattern> | 
				
			||||
 | 
					            <!--日志文件保留天数--> | 
				
			||||
 | 
					            <MaxHistory>30</MaxHistory> | 
				
			||||
 | 
					            <!--日志文件大小--> | 
				
			||||
 | 
					            <maxFileSize>1000MB</maxFileSize> | 
				
			||||
 | 
					        </rollingPolicy> | 
				
			||||
 | 
					        <encoder class="com.yomahub.tlog.core.enhance.logback.AspectLogbackEncoder"> | 
				
			||||
 | 
					            <!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符--> | 
				
			||||
 | 
					            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern> | 
				
			||||
 | 
					        </encoder> | 
				
			||||
 | 
					    </appender> | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    <!-- 日志输出级别 --> | 
				
			||||
 | 
					    <root level="INFO"> | 
				
			||||
 | 
					        <appender-ref ref="STDOUT" /> | 
				
			||||
 | 
					        <appender-ref ref="FILE" /> | 
				
			||||
 | 
					    </root> | 
				
			||||
 | 
					</configuration> | 
				
			||||
@ -0,0 +1,141 @@ | 
				
			|||||
 | 
					<?xml version="1.0" encoding="UTF-8"?> | 
				
			||||
 | 
					<module org.jetbrains.idea.maven.project.MavenProjectsManager.isMavenModule="true" type="JAVA_MODULE" version="4"> | 
				
			||||
 | 
					  <component name="FacetManager"> | 
				
			||||
 | 
					    <facet type="Spring" name="Spring"> | 
				
			||||
 | 
					      <configuration /> | 
				
			||||
 | 
					    </facet> | 
				
			||||
 | 
					    <facet type="web" name="Web"> | 
				
			||||
 | 
					      <configuration> | 
				
			||||
 | 
					        <webroots /> | 
				
			||||
 | 
					      </configuration> | 
				
			||||
 | 
					    </facet> | 
				
			||||
 | 
					  </component> | 
				
			||||
 | 
					  <component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_8"> | 
				
			||||
 | 
					    <output url="file://$MODULE_DIR$/target/classes" /> | 
				
			||||
 | 
					    <output-test url="file://$MODULE_DIR$/target/test-classes" /> | 
				
			||||
 | 
					    <content url="file://$MODULE_DIR$"> | 
				
			||||
 | 
					      <sourceFolder url="file://$MODULE_DIR$/src/main/java" isTestSource="false" /> | 
				
			||||
 | 
					      <sourceFolder url="file://$MODULE_DIR$/src/main/resources" type="java-resource" /> | 
				
			||||
 | 
					      <excludeFolder url="file://$MODULE_DIR$/target" /> | 
				
			||||
 | 
					    </content> | 
				
			||||
 | 
					    <orderEntry type="inheritedJdk" /> | 
				
			||||
 | 
					    <orderEntry type="sourceFolder" forTests="false" /> | 
				
			||||
 | 
					    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-web:2.1.8.RELEASE" level="project" /> | 
				
			||||
 | 
					    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter:2.1.8.RELEASE" level="project" /> | 
				
			||||
 | 
					    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot:2.1.8.RELEASE" level="project" /> | 
				
			||||
 | 
					    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-autoconfigure:2.1.8.RELEASE" level="project" /> | 
				
			||||
 | 
					    <orderEntry type="library" name="Maven: javax.annotation:javax.annotation-api:1.3.2" level="project" /> | 
				
			||||
 | 
					    <orderEntry type="library" name="Maven: org.springframework:spring-core:5.1.9.RELEASE" level="project" /> | 
				
			||||
 | 
					    <orderEntry type="library" name="Maven: org.springframework:spring-jcl:5.1.9.RELEASE" level="project" /> | 
				
			||||
 | 
					    <orderEntry type="library" scope="RUNTIME" name="Maven: org.yaml:snakeyaml:1.23" level="project" /> | 
				
			||||
 | 
					    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-json:2.1.8.RELEASE" level="project" /> | 
				
			||||
 | 
					    <orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-databind:2.9.9.3" level="project" /> | 
				
			||||
 | 
					    <orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-annotations:2.9.0" level="project" /> | 
				
			||||
 | 
					    <orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-core:2.9.9" level="project" /> | 
				
			||||
 | 
					    <orderEntry type="library" name="Maven: com.fasterxml.jackson.datatype:jackson-datatype-jdk8:2.9.9" level="project" /> | 
				
			||||
 | 
					    <orderEntry type="library" name="Maven: com.fasterxml.jackson.datatype:jackson-datatype-jsr310:2.9.9" level="project" /> | 
				
			||||
 | 
					    <orderEntry type="library" name="Maven: com.fasterxml.jackson.module:jackson-module-parameter-names:2.9.9" level="project" /> | 
				
			||||
 | 
					    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-tomcat:2.1.8.RELEASE" level="project" /> | 
				
			||||
 | 
					    <orderEntry type="library" name="Maven: org.apache.tomcat.embed:tomcat-embed-core:9.0.24" level="project" /> | 
				
			||||
 | 
					    <orderEntry type="library" name="Maven: org.apache.tomcat.embed:tomcat-embed-el:9.0.24" level="project" /> | 
				
			||||
 | 
					    <orderEntry type="library" name="Maven: org.apache.tomcat.embed:tomcat-embed-websocket:9.0.24" level="project" /> | 
				
			||||
 | 
					    <orderEntry type="library" name="Maven: org.hibernate.validator:hibernate-validator:6.0.17.Final" level="project" /> | 
				
			||||
 | 
					    <orderEntry type="library" name="Maven: javax.validation:validation-api:2.0.1.Final" level="project" /> | 
				
			||||
 | 
					    <orderEntry type="library" name="Maven: org.jboss.logging:jboss-logging:3.3.3.Final" level="project" /> | 
				
			||||
 | 
					    <orderEntry type="library" name="Maven: com.fasterxml:classmate:1.4.0" level="project" /> | 
				
			||||
 | 
					    <orderEntry type="library" name="Maven: org.springframework:spring-web:5.1.9.RELEASE" level="project" /> | 
				
			||||
 | 
					    <orderEntry type="library" name="Maven: org.springframework:spring-beans:5.1.9.RELEASE" level="project" /> | 
				
			||||
 | 
					    <orderEntry type="library" name="Maven: org.springframework:spring-webmvc:5.1.9.RELEASE" level="project" /> | 
				
			||||
 | 
					    <orderEntry type="library" name="Maven: org.springframework:spring-aop:5.1.9.RELEASE" level="project" /> | 
				
			||||
 | 
					    <orderEntry type="library" name="Maven: org.springframework:spring-context:5.1.9.RELEASE" level="project" /> | 
				
			||||
 | 
					    <orderEntry type="library" name="Maven: org.springframework:spring-expression:5.1.9.RELEASE" level="project" /> | 
				
			||||
 | 
					    <orderEntry type="library" name="Maven: org.springframework.cloud:spring-cloud-starter-openfeign:2.1.3.RELEASE" level="project" /> | 
				
			||||
 | 
					    <orderEntry type="library" name="Maven: org.springframework.cloud:spring-cloud-starter:2.1.3.RELEASE" level="project" /> | 
				
			||||
 | 
					    <orderEntry type="library" name="Maven: org.springframework.cloud:spring-cloud-context:2.1.3.RELEASE" level="project" /> | 
				
			||||
 | 
					    <orderEntry type="library" name="Maven: org.springframework.security:spring-security-rsa:1.0.7.RELEASE" level="project" /> | 
				
			||||
 | 
					    <orderEntry type="library" name="Maven: org.bouncycastle:bcpkix-jdk15on:1.60" level="project" /> | 
				
			||||
 | 
					    <orderEntry type="library" name="Maven: org.bouncycastle:bcprov-jdk15on:1.60" level="project" /> | 
				
			||||
 | 
					    <orderEntry type="library" name="Maven: org.springframework.cloud:spring-cloud-openfeign-core:2.1.3.RELEASE" level="project" /> | 
				
			||||
 | 
					    <orderEntry type="library" name="Maven: org.springframework.cloud:spring-cloud-netflix-ribbon:2.1.3.RELEASE" level="project" /> | 
				
			||||
 | 
					    <orderEntry type="library" name="Maven: org.springframework.cloud:spring-cloud-netflix-archaius:2.1.3.RELEASE" level="project" /> | 
				
			||||
 | 
					    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-aop:2.1.8.RELEASE" level="project" /> | 
				
			||||
 | 
					    <orderEntry type="library" name="Maven: org.aspectj:aspectjweaver:1.9.4" level="project" /> | 
				
			||||
 | 
					    <orderEntry type="library" name="Maven: io.github.openfeign.form:feign-form-spring:3.8.0" level="project" /> | 
				
			||||
 | 
					    <orderEntry type="library" name="Maven: io.github.openfeign.form:feign-form:3.8.0" level="project" /> | 
				
			||||
 | 
					    <orderEntry type="library" name="Maven: commons-fileupload:commons-fileupload:1.4" level="project" /> | 
				
			||||
 | 
					    <orderEntry type="library" name="Maven: commons-io:commons-io:2.2" level="project" /> | 
				
			||||
 | 
					    <orderEntry type="library" name="Maven: org.springframework.cloud:spring-cloud-commons:2.1.3.RELEASE" level="project" /> | 
				
			||||
 | 
					    <orderEntry type="library" name="Maven: org.springframework.security:spring-security-crypto:5.1.6.RELEASE" level="project" /> | 
				
			||||
 | 
					    <orderEntry type="library" name="Maven: io.github.openfeign:feign-core:10.2.3" level="project" /> | 
				
			||||
 | 
					    <orderEntry type="library" name="Maven: io.github.openfeign:feign-slf4j:10.2.3" level="project" /> | 
				
			||||
 | 
					    <orderEntry type="library" name="Maven: org.slf4j:slf4j-api:1.7.25" level="project" /> | 
				
			||||
 | 
					    <orderEntry type="library" name="Maven: io.github.openfeign:feign-hystrix:10.2.3" level="project" /> | 
				
			||||
 | 
					    <orderEntry type="library" name="Maven: com.netflix.archaius:archaius-core:0.7.6" level="project" /> | 
				
			||||
 | 
					    <orderEntry type="library" scope="RUNTIME" name="Maven: com.google.code.findbugs:jsr305:3.0.1" level="project" /> | 
				
			||||
 | 
					    <orderEntry type="library" name="Maven: commons-configuration:commons-configuration:1.8" level="project" /> | 
				
			||||
 | 
					    <orderEntry type="library" name="Maven: commons-lang:commons-lang:2.6" level="project" /> | 
				
			||||
 | 
					    <orderEntry type="library" name="Maven: com.google.guava:guava:16.0" level="project" /> | 
				
			||||
 | 
					    <orderEntry type="library" name="Maven: com.netflix.hystrix:hystrix-core:1.5.18" level="project" /> | 
				
			||||
 | 
					    <orderEntry type="library" name="Maven: io.reactivex:rxjava:1.3.8" level="project" /> | 
				
			||||
 | 
					    <orderEntry type="library" name="Maven: org.hdrhistogram:HdrHistogram:2.1.9" level="project" /> | 
				
			||||
 | 
					    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-logging:2.1.8.RELEASE" level="project" /> | 
				
			||||
 | 
					    <orderEntry type="library" name="Maven: ch.qos.logback:logback-classic:1.2.3" level="project" /> | 
				
			||||
 | 
					    <orderEntry type="library" name="Maven: ch.qos.logback:logback-core:1.2.3" level="project" /> | 
				
			||||
 | 
					    <orderEntry type="library" name="Maven: org.apache.logging.log4j:log4j-to-slf4j:2.11.2" level="project" /> | 
				
			||||
 | 
					    <orderEntry type="library" name="Maven: org.apache.logging.log4j:log4j-api:2.11.2" level="project" /> | 
				
			||||
 | 
					    <orderEntry type="library" name="Maven: org.slf4j:jul-to-slf4j:1.7.28" level="project" /> | 
				
			||||
 | 
					    <orderEntry type="library" name="Maven: com.alibaba.cloud:spring-cloud-starter-alibaba-nacos-discovery:2.1.0.RELEASE" level="project" /> | 
				
			||||
 | 
					    <orderEntry type="library" name="Maven: com.alibaba.cloud:spring-cloud-alibaba-nacos-discovery:2.1.0.RELEASE" level="project" /> | 
				
			||||
 | 
					    <orderEntry type="library" name="Maven: com.alibaba.nacos:nacos-client:1.1.1" level="project" /> | 
				
			||||
 | 
					    <orderEntry type="library" name="Maven: com.alibaba.nacos:nacos-common:1.1.1" level="project" /> | 
				
			||||
 | 
					    <orderEntry type="library" name="Maven: com.alibaba.nacos:nacos-api:1.1.1" level="project" /> | 
				
			||||
 | 
					    <orderEntry type="library" name="Maven: commons-codec:commons-codec:1.11" level="project" /> | 
				
			||||
 | 
					    <orderEntry type="library" name="Maven: io.prometheus:simpleclient:0.5.0" level="project" /> | 
				
			||||
 | 
					    <orderEntry type="library" name="Maven: org.springframework.cloud:spring-cloud-starter-netflix-ribbon:2.1.3.RELEASE" level="project" /> | 
				
			||||
 | 
					    <orderEntry type="library" name="Maven: org.springframework.cloud:spring-cloud-starter-netflix-archaius:2.1.3.RELEASE" level="project" /> | 
				
			||||
 | 
					    <orderEntry type="library" name="Maven: com.netflix.ribbon:ribbon:2.3.0" level="project" /> | 
				
			||||
 | 
					    <orderEntry type="library" scope="RUNTIME" name="Maven: com.netflix.ribbon:ribbon-transport:2.3.0" level="project" /> | 
				
			||||
 | 
					    <orderEntry type="library" scope="RUNTIME" name="Maven: io.reactivex:rxnetty-contexts:0.4.9" level="project" /> | 
				
			||||
 | 
					    <orderEntry type="library" scope="RUNTIME" name="Maven: io.reactivex:rxnetty-servo:0.4.9" level="project" /> | 
				
			||||
 | 
					    <orderEntry type="library" scope="RUNTIME" name="Maven: javax.inject:javax.inject:1" level="project" /> | 
				
			||||
 | 
					    <orderEntry type="library" scope="RUNTIME" name="Maven: io.reactivex:rxnetty:0.4.9" level="project" /> | 
				
			||||
 | 
					    <orderEntry type="library" name="Maven: com.netflix.ribbon:ribbon-core:2.3.0" level="project" /> | 
				
			||||
 | 
					    <orderEntry type="library" name="Maven: com.netflix.ribbon:ribbon-httpclient:2.3.0" level="project" /> | 
				
			||||
 | 
					    <orderEntry type="library" scope="RUNTIME" name="Maven: commons-collections:commons-collections:3.2.2" level="project" /> | 
				
			||||
 | 
					    <orderEntry type="library" scope="RUNTIME" name="Maven: org.apache.httpcomponents:httpclient:4.5.9" level="project" /> | 
				
			||||
 | 
					    <orderEntry type="library" scope="RUNTIME" name="Maven: org.apache.httpcomponents:httpcore:4.4.12" level="project" /> | 
				
			||||
 | 
					    <orderEntry type="library" scope="RUNTIME" name="Maven: com.sun.jersey:jersey-client:1.19.1" level="project" /> | 
				
			||||
 | 
					    <orderEntry type="library" scope="RUNTIME" name="Maven: com.sun.jersey:jersey-core:1.19.1" level="project" /> | 
				
			||||
 | 
					    <orderEntry type="library" scope="RUNTIME" name="Maven: javax.ws.rs:jsr311-api:1.1.1" level="project" /> | 
				
			||||
 | 
					    <orderEntry type="library" scope="RUNTIME" name="Maven: com.sun.jersey.contribs:jersey-apache-client4:1.19.1" level="project" /> | 
				
			||||
 | 
					    <orderEntry type="library" scope="RUNTIME" name="Maven: com.netflix.servo:servo-core:0.12.21" level="project" /> | 
				
			||||
 | 
					    <orderEntry type="library" scope="RUNTIME" name="Maven: com.netflix.netflix-commons:netflix-commons-util:0.3.0" level="project" /> | 
				
			||||
 | 
					    <orderEntry type="library" name="Maven: com.netflix.ribbon:ribbon-loadbalancer:2.3.0" level="project" /> | 
				
			||||
 | 
					    <orderEntry type="library" scope="RUNTIME" name="Maven: com.netflix.netflix-commons:netflix-statistics:0.1.1" level="project" /> | 
				
			||||
 | 
					    <orderEntry type="library" name="Maven: com.yomahub:tlog-feign-spring-boot-starter:1.5.0" level="project" /> | 
				
			||||
 | 
					    <orderEntry type="library" name="Maven: com.yomahub:tlog-spring-boot-configuration:1.5.0" level="project" /> | 
				
			||||
 | 
					    <orderEntry type="library" name="Maven: com.yomahub:tlog-feign:1.5.0" level="project" /> | 
				
			||||
 | 
					    <orderEntry type="library" name="Maven: com.yomahub:tlog-core:1.5.0" level="project" /> | 
				
			||||
 | 
					    <orderEntry type="library" name="Maven: org.dom4j:dom4j:2.1.3" level="project" /> | 
				
			||||
 | 
					    <orderEntry type="library" name="Maven: org.javassist:javassist:3.22.0-GA" level="project" /> | 
				
			||||
 | 
					    <orderEntry type="library" name="Maven: com.alibaba:fastjson:1.2.83" level="project" /> | 
				
			||||
 | 
					    <orderEntry type="library" name="Maven: com.alibaba:QLExpress:3.2.0" level="project" /> | 
				
			||||
 | 
					    <orderEntry type="library" name="Maven: commons-beanutils:commons-beanutils:1.8.2" level="project" /> | 
				
			||||
 | 
					    <orderEntry type="library" name="Maven: commons-logging:commons-logging:1.1.1" level="project" /> | 
				
			||||
 | 
					    <orderEntry type="library" name="Maven: com.yomahub:tlog-task:1.5.0" level="project" /> | 
				
			||||
 | 
					    <orderEntry type="library" name="Maven: com.yomahub:tlog-httpclient:1.5.0" level="project" /> | 
				
			||||
 | 
					    <orderEntry type="library" name="Maven: com.yomahub:tlog-common:1.5.0" level="project" /> | 
				
			||||
 | 
					    <orderEntry type="library" name="Maven: org.apache.commons:commons-lang3:3.8.1" level="project" /> | 
				
			||||
 | 
					    <orderEntry type="library" name="Maven: cn.hutool:hutool-core:5.8.6" level="project" /> | 
				
			||||
 | 
					    <orderEntry type="library" name="Maven: com.alibaba:transmittable-thread-local:2.12.2" level="project" /> | 
				
			||||
 | 
					    <orderEntry type="library" name="Maven: com.yomahub:tlog-okhttp:1.5.0" level="project" /> | 
				
			||||
 | 
					    <orderEntry type="library" name="Maven: com.squareup.okhttp3:okhttp:3.8.1" level="project" /> | 
				
			||||
 | 
					    <orderEntry type="library" name="Maven: com.squareup.okio:okio:1.13.0" level="project" /> | 
				
			||||
 | 
					    <orderEntry type="library" name="Maven: com.yomahub:tlog-hutool-http:1.5.0" level="project" /> | 
				
			||||
 | 
					    <orderEntry type="library" name="Maven: com.yomahub:tlog-forest:1.5.0" level="project" /> | 
				
			||||
 | 
					    <orderEntry type="library" name="Maven: com.yomahub:tlog-rest-template:1.5.0" level="project" /> | 
				
			||||
 | 
					    <orderEntry type="library" name="Maven: com.yomahub:tlog-web-spring-boot-starter:1.5.0" level="project" /> | 
				
			||||
 | 
					    <orderEntry type="library" name="Maven: com.yomahub:tlog-webroot:1.5.0" level="project" /> | 
				
			||||
 | 
					    <orderEntry type="library" name="Maven: org.projectlombok:lombok:1.18.8" level="project" /> | 
				
			||||
 | 
					  </component> | 
				
			||||
 | 
					</module> | 
				
			||||
					Loading…
					
					
				
		Reference in new issue