|
@@ -25,28 +25,48 @@ import org.springframework.web.client.RestTemplate;
|
|
@Slf4j
|
|
@Slf4j
|
|
public final class RestContextHolder {
|
|
public final class RestContextHolder {
|
|
/**
|
|
/**
|
|
- * RestTemplate实例
|
|
|
|
|
|
+ * 全局RestTemplate实例
|
|
*/
|
|
*/
|
|
- private static volatile RestTemplate TEMPLATE;
|
|
|
|
|
|
+ private static volatile RestTemplate GLOBAL_TEMPLATE;
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * 默认RestTemplate实例
|
|
|
|
+ */
|
|
|
|
+ private static volatile RestTemplate DEFAULT_TEMPLATE;
|
|
|
|
|
|
private RestContextHolder() {
|
|
private RestContextHolder() {
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
/**
|
|
- * 获取RestTemplate实例
|
|
|
|
|
|
+ * 获取全局RestTemplate实例
|
|
|
|
+ *
|
|
|
|
+ * @return RestTemplate实例
|
|
|
|
+ */
|
|
|
|
+ public static RestTemplate getGlobalTemplate() {
|
|
|
|
+ if (GLOBAL_TEMPLATE == null) {
|
|
|
|
+ synchronized (RestTemplate.class) {
|
|
|
|
+ if (GLOBAL_TEMPLATE == null) {
|
|
|
|
+ GLOBAL_TEMPLATE = ApplicationContextHolder.getBean(RestTemplate.class, false);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ return ObjectUtils.ifNull(GLOBAL_TEMPLATE, RestContextHolder::getDefaultTemplate);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * 获取默认RestTemplate实例
|
|
*
|
|
*
|
|
* @return RestTemplate实例
|
|
* @return RestTemplate实例
|
|
*/
|
|
*/
|
|
- public static RestTemplate getTemplate() {
|
|
|
|
- if (TEMPLATE == null) {
|
|
|
|
|
|
+ public static RestTemplate getDefaultTemplate() {
|
|
|
|
+ if (DEFAULT_TEMPLATE == null) {
|
|
synchronized (RestTemplate.class) {
|
|
synchronized (RestTemplate.class) {
|
|
- if (TEMPLATE == null
|
|
|
|
- && (TEMPLATE = ApplicationContextHolder.getBean(RestTemplate.class, false)) == null) {
|
|
|
|
- TEMPLATE = new RestTemplate();
|
|
|
|
|
|
+ if (DEFAULT_TEMPLATE == null) {
|
|
|
|
+ DEFAULT_TEMPLATE = new RestTemplate();
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
- return TEMPLATE;
|
|
|
|
|
|
+ return DEFAULT_TEMPLATE;
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
/**
|
|
@@ -58,7 +78,7 @@ public final class RestContextHolder {
|
|
*/
|
|
*/
|
|
public static <T> T execute(@NonNull Function<RestTemplate, T> function) {
|
|
public static <T> T execute(@NonNull Function<RestTemplate, T> function) {
|
|
try {
|
|
try {
|
|
- return function.apply(getTemplate());
|
|
|
|
|
|
+ return function.apply(getGlobalTemplate());
|
|
} catch (Exception e) {
|
|
} catch (Exception e) {
|
|
if (ErrorUtils.contains(e, IOException.class)) {
|
|
if (ErrorUtils.contains(e, IOException.class)) {
|
|
log.warn("Rest invoke failed and retry later: {}", e.getMessage());
|
|
log.warn("Rest invoke failed and retry later: {}", e.getMessage());
|