Skip to content

Commit 5feca08

Browse files
committed
添加RestTemplate支持透传链路信息
1 parent 8d05b34 commit 5feca08

File tree

4 files changed

+77
-4
lines changed

4 files changed

+77
-4
lines changed

api-boot-project/api-boot-autoconfigure/src/main/java/org/minbox/framework/api/boot/autoconfigure/logging/ApiBootLoggingAutoConfiguration.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,7 @@
6161
ApiBootLoggingAdminDiscoveryAutoConfiguration.class,
6262
ApiBootLoggingAdminAppointAutoConfiguration.class,
6363
ApiBootLoggingOpenfeignAutoConfiguration.class,
64+
ApiBootLoggingRestTemplateAutoConfiguration.class,
6465
ApiBootLoggingWebAutoConfiguration.class
6566
})
6667
public class ApiBootLoggingAutoConfiguration {
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
/*
2+
* Copyright [2019] [恒宇少年 - 于起宇]
3+
*
4+
* Licensed under the Apache License, Version 2.0 (the "License");
5+
* you may not use this file except in compliance with the License.
6+
* You may obtain a copy of the License at
7+
*
8+
* http://www.apache.org/licenses/LICENSE-2.0
9+
*
10+
* Unless required by applicable law or agreed to in writing, software
11+
* distributed under the License is distributed on an "AS IS" BASIS,
12+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13+
* See the License for the specific language governing permissions and
14+
* limitations under the License.
15+
*
16+
*/
17+
18+
package org.minbox.framework.api.boot.autoconfigure.logging;
19+
20+
import org.minbox.framework.logging.client.http.rest.LoggingRestTemplateInterceptor;
21+
import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;
22+
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
23+
import org.springframework.context.annotation.Configuration;
24+
import org.springframework.http.client.ClientHttpRequestInterceptor;
25+
import org.springframework.util.ObjectUtils;
26+
import org.springframework.web.client.RestTemplate;
27+
28+
import java.util.Arrays;
29+
import java.util.List;
30+
31+
/**
32+
* ApiBoot Logging ResTemplate Config
33+
* {@link RestTemplate}
34+
* Setting Interceptor Transmit Link Information
35+
*
36+
* @author 恒宇少年
37+
*/
38+
@Configuration
39+
@ConditionalOnClass(RestTemplate.class)
40+
@ConditionalOnBean(RestTemplate.class)
41+
public class ApiBootLoggingRestTemplateAutoConfiguration {
42+
43+
public ApiBootLoggingRestTemplateAutoConfiguration(RestTemplate restTemplate) {
44+
45+
List<ClientHttpRequestInterceptor> interceptors = restTemplate.getInterceptors();
46+
47+
LoggingRestTemplateInterceptor interceptor = new LoggingRestTemplateInterceptor();
48+
49+
if (ObjectUtils.isEmpty(interceptors)) {
50+
restTemplate.setInterceptors(Arrays.asList(interceptor));
51+
} else {
52+
interceptors.add(interceptor);
53+
}
54+
}
55+
}

api-boot-samples/api-boot-sample-logging/src/main/java/org/minbox/framework/api/boot/sample/logging/ApiBootLoggingApplication.java

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,9 @@
2121
import org.slf4j.LoggerFactory;
2222
import org.springframework.boot.SpringApplication;
2323
import org.springframework.boot.autoconfigure.SpringBootApplication;
24+
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
25+
import org.springframework.context.annotation.Bean;
26+
import org.springframework.web.client.RestTemplate;
2427

2528
/**
2629
* 日志示例
@@ -34,7 +37,7 @@
3437
* GitHub:https://github.com/hengboy
3538
*/
3639
@SpringBootApplication
37-
public class ApiBootLoggingApplication{
40+
public class ApiBootLoggingApplication {
3841
/**
3942
* logger instance
4043
*/
@@ -44,4 +47,15 @@ public static void main(String[] args) {
4447
SpringApplication.run(ApiBootLoggingApplication.class, args);
4548
logger.info("{}服务启动成功.", "ApiBoot Logging Sample");
4649
}
50+
51+
/**
52+
* 测试使用RestTemplate来透传链路信息
53+
*
54+
* @return
55+
*/
56+
@Bean
57+
@ConditionalOnMissingBean
58+
public RestTemplate restTemplate() {
59+
return new RestTemplate();
60+
}
4761
}

api-boot-samples/api-boot-sample-logging/src/main/java/org/minbox/framework/api/boot/sample/logging/IndexController.java

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,9 +18,11 @@
1818
package org.minbox.framework.api.boot.sample.logging;
1919

2020
import lombok.Data;
21+
import org.springframework.beans.factory.annotation.Autowired;
2122
import org.springframework.web.bind.annotation.PostMapping;
2223
import org.springframework.web.bind.annotation.RequestBody;
2324
import org.springframework.web.bind.annotation.RestController;
25+
import org.springframework.web.client.RestTemplate;
2426

2527
/**
2628
* @author:恒宇少年 - 于起宇
@@ -34,11 +36,12 @@
3436
@RestController
3537
public class IndexController {
3638

39+
@Autowired
40+
private RestTemplate restTemplate;
41+
3742
@PostMapping(value = "/index")
3843
public User index(@RequestBody User user) throws Exception {
39-
/*HttpEntity<String> httpEntity = new HttpEntity(JSON.toJSONString(user));
40-
ResponseEntity<String> result = restTemplate.postForEntity("http://localhost:8080/index", httpEntity, String.class);
41-
System.out.println(result.getBody());*/
44+
System.out.println(restTemplate.getInterceptors());
4245
return user;
4346
}
4447

0 commit comments

Comments
 (0)