From c7b0960719ac5cef76486b27041513ebef2fa9fb Mon Sep 17 00:00:00 2001 From: pandaapo <35672972+pandaapo@users.noreply.github.com> Date: Mon, 12 Dec 2022 11:39:14 +0800 Subject: [PATCH] Fix issue: prompt no registration if web dependence was not imported. (#772) --- CHANGELOG.md | 1 + ...larisServiceRegistryAutoConfiguration.java | 5 +++ .../registry/PolarisWebApplicationCheck.java | 45 +++++++++++++++++++ 3 files changed, 51 insertions(+) create mode 100644 spring-cloud-starter-tencent-polaris-discovery/src/main/java/com/tencent/cloud/polaris/registry/PolarisWebApplicationCheck.java diff --git a/CHANGELOG.md b/CHANGELOG.md index 2f9f7811..419029f3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -20,3 +20,4 @@ - [adapt polaris-java 1.10.1 version](https://github.com/Tencent/spring-cloud-tencent/pull/746) - [Optimize: change RouteArgument.buildCustom to RouteArgument.fromLabel](https://github.com/Tencent/spring-cloud-tencent/pull/749) - [Optimize: get service instances by Flux.blockLast() to resolve concurrent problem](https://github.com/Tencent/spring-cloud-tencent/pull/764) +- [Fix issue: prompt no registration if web dependence was not imported.](https://github.com/Tencent/spring-cloud-tencent/pull/772) diff --git a/spring-cloud-starter-tencent-polaris-discovery/src/main/java/com/tencent/cloud/polaris/registry/PolarisServiceRegistryAutoConfiguration.java b/spring-cloud-starter-tencent-polaris-discovery/src/main/java/com/tencent/cloud/polaris/registry/PolarisServiceRegistryAutoConfiguration.java index 129450bc..41c69e8e 100644 --- a/spring-cloud-starter-tencent-polaris-discovery/src/main/java/com/tencent/cloud/polaris/registry/PolarisServiceRegistryAutoConfiguration.java +++ b/spring-cloud-starter-tencent-polaris-discovery/src/main/java/com/tencent/cloud/polaris/registry/PolarisServiceRegistryAutoConfiguration.java @@ -72,4 +72,9 @@ public class PolarisServiceRegistryAutoConfiguration { AutoServiceRegistrationProperties autoServiceRegistrationProperties, PolarisRegistration registration) { return new PolarisAutoServiceRegistration(registry, autoServiceRegistrationProperties, registration); } + + @Bean + public PolarisWebApplicationCheck polarisApplicationReady() { + return new PolarisWebApplicationCheck(); + } } diff --git a/spring-cloud-starter-tencent-polaris-discovery/src/main/java/com/tencent/cloud/polaris/registry/PolarisWebApplicationCheck.java b/spring-cloud-starter-tencent-polaris-discovery/src/main/java/com/tencent/cloud/polaris/registry/PolarisWebApplicationCheck.java new file mode 100644 index 00000000..2ed34d25 --- /dev/null +++ b/spring-cloud-starter-tencent-polaris-discovery/src/main/java/com/tencent/cloud/polaris/registry/PolarisWebApplicationCheck.java @@ -0,0 +1,45 @@ +/* + * Tencent is pleased to support the open source community by making Spring Cloud Tencent available. + * + * Copyright (C) 2019 THL A29 Limited, a Tencent company. All rights reserved. + * + * Licensed under the BSD 3-Clause License (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://opensource.org/licenses/BSD-3-Clause + * + * 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. + */ + +package com.tencent.cloud.polaris.registry; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.WebApplicationType; +import org.springframework.boot.context.event.ApplicationReadyEvent; +import org.springframework.context.ApplicationListener; + +/** + * Prompt user if web dependence was not imported. + * + * @author Daifu Wu + */ +public class PolarisWebApplicationCheck implements ApplicationListener { + + private static final Logger LOGGER = LoggerFactory.getLogger(PolarisWebApplicationCheck.class); + + @Override + public void onApplicationEvent(ApplicationReadyEvent event) { + SpringApplication springApplication = event.getSpringApplication(); + WebApplicationType webApplicationType = springApplication.getWebApplicationType(); + if (webApplicationType.equals(WebApplicationType.NONE)) { + LOGGER.warn("This service instance will not be registered, because it is not a servlet-based or reactive web application."); + } + } +}