From e64d260712844116fb5a123b7f6b645b2b8869c5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=86=B7=E5=86=B7?= Date: Mon, 5 Nov 2018 20:59:42 +0800 Subject: [PATCH] =?UTF-8?q?:recycle:=20=E9=87=8D=E6=9E=84=E4=BB=A3?= =?UTF-8?q?=E7=A0=81=E3=80=82=20=E5=8A=A8=E6=80=81=E8=B7=AF=E7=94=B1?= =?UTF-8?q?=E9=83=A8=E5=88=86=E6=8A=BD=E5=8F=96=E6=88=90=E5=85=AC=E7=94=A8?= =?UTF-8?q?=E7=BB=84=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pigx-common/pigx-common-gateway/pom.xml | 46 +++++++++++++++++++ .../annotation/EnablePigxDynamicRoute.java | 37 +++++++++++++++ .../DynamicRouteAutoConfiguration.java | 33 +++++++++++++ .../gateway/support/DynamicRouteEndpoint.java | 2 +- .../gateway/support/DynamicRouteHandler.java | 4 +- .../support/DynamicRouteInitEvent.java | 2 +- .../support/DynamicRouteInitRunner.java | 4 +- .../support/RedisRouteDefinitionWriter.java | 4 +- .../common/gateway}/vo/RouteDefinitionVo.java | 3 +- pigx-common/pom.xml | 1 + pigx-gateway/pom.xml | 6 +++ .../pigx/gateway/PigxGatewayApplication.java | 2 + 12 files changed, 135 insertions(+), 9 deletions(-) create mode 100644 pigx-common/pigx-common-gateway/pom.xml create mode 100644 pigx-common/pigx-common-gateway/src/main/java/com/pig4cloud/pigx/common/gateway/annotation/EnablePigxDynamicRoute.java create mode 100644 pigx-common/pigx-common-gateway/src/main/java/com/pig4cloud/pigx/common/gateway/configuration/DynamicRouteAutoConfiguration.java rename {pigx-gateway/src/main/java/com/pig4cloud/pigx => pigx-common/pigx-common-gateway/src/main/java/com/pig4cloud/pigx/common}/gateway/support/DynamicRouteEndpoint.java (97%) rename {pigx-gateway/src/main/java/com/pig4cloud/pigx => pigx-common/pigx-common-gateway/src/main/java/com/pig4cloud/pigx/common}/gateway/support/DynamicRouteHandler.java (97%) rename {pigx-gateway/src/main/java/com/pig4cloud/pigx => pigx-common/pigx-common-gateway/src/main/java/com/pig4cloud/pigx/common}/gateway/support/DynamicRouteInitEvent.java (95%) rename {pigx-gateway/src/main/java/com/pig4cloud/pigx => pigx-common/pigx-common-gateway/src/main/java/com/pig4cloud/pigx/common}/gateway/support/DynamicRouteInitRunner.java (96%) rename {pigx-gateway/src/main/java/com/pig4cloud/pigx => pigx-common/pigx-common-gateway/src/main/java/com/pig4cloud/pigx/common}/gateway/support/RedisRouteDefinitionWriter.java (95%) rename {pigx-gateway/src/main/java/com/pig4cloud/pigx/gateway/support => pigx-common/pigx-common-gateway/src/main/java/com/pig4cloud/pigx/common/gateway}/vo/RouteDefinitionVo.java (95%) diff --git a/pigx-common/pigx-common-gateway/pom.xml b/pigx-common/pigx-common-gateway/pom.xml new file mode 100644 index 000000000..7becb55aa --- /dev/null +++ b/pigx-common/pigx-common-gateway/pom.xml @@ -0,0 +1,46 @@ + + + + + 4.0.0 + + com.pig4cloud + pigx-common + ${pigx.version} + + + pigx-common-gateway + jar + + pigx gateway + + + + com.pig4cloud + pigx-common-core + ${pigx.version} + + + org.springframework.cloud + spring-cloud-gateway-core + + + diff --git a/pigx-common/pigx-common-gateway/src/main/java/com/pig4cloud/pigx/common/gateway/annotation/EnablePigxDynamicRoute.java b/pigx-common/pigx-common-gateway/src/main/java/com/pig4cloud/pigx/common/gateway/annotation/EnablePigxDynamicRoute.java new file mode 100644 index 000000000..c608b6652 --- /dev/null +++ b/pigx-common/pigx-common-gateway/src/main/java/com/pig4cloud/pigx/common/gateway/annotation/EnablePigxDynamicRoute.java @@ -0,0 +1,37 @@ +/* + * Copyright (c) 2018-2025, lengleng All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * Neither the name of the pig4cloud.com developer nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * Author: lengleng (wangiegie@gmail.com) + */ + +package com.pig4cloud.pigx.common.gateway.annotation; + +import com.pig4cloud.pigx.common.gateway.configuration.DynamicRouteAutoConfiguration; +import org.springframework.context.annotation.Import; + +import java.lang.annotation.*; + +/** + * @author lengleng + * @date 2018/11/5 + *

+ * 开启pigx 动态路由 + */ +@Target({ElementType.TYPE}) +@Retention(RetentionPolicy.RUNTIME) +@Documented +@Inherited +@Import(DynamicRouteAutoConfiguration.class) +public @interface EnablePigxDynamicRoute { +} diff --git a/pigx-common/pigx-common-gateway/src/main/java/com/pig4cloud/pigx/common/gateway/configuration/DynamicRouteAutoConfiguration.java b/pigx-common/pigx-common-gateway/src/main/java/com/pig4cloud/pigx/common/gateway/configuration/DynamicRouteAutoConfiguration.java new file mode 100644 index 000000000..9fe552456 --- /dev/null +++ b/pigx-common/pigx-common-gateway/src/main/java/com/pig4cloud/pigx/common/gateway/configuration/DynamicRouteAutoConfiguration.java @@ -0,0 +1,33 @@ +/* + * Copyright (c) 2018-2025, lengleng All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * Neither the name of the pig4cloud.com developer nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * Author: lengleng (wangiegie@gmail.com) + */ + +package com.pig4cloud.pigx.common.gateway.configuration; + +import org.springframework.context.annotation.ComponentScan; +import org.springframework.context.annotation.Configuration; + +/** + * @author lengleng + * @date 2018/11/5 + *

+ * 动态路由配置类 + */ +@Configuration +@ComponentScan("com.pig4cloud.pigx.common.gateway.support") +public class DynamicRouteAutoConfiguration { + +} diff --git a/pigx-gateway/src/main/java/com/pig4cloud/pigx/gateway/support/DynamicRouteEndpoint.java b/pigx-common/pigx-common-gateway/src/main/java/com/pig4cloud/pigx/common/gateway/support/DynamicRouteEndpoint.java similarity index 97% rename from pigx-gateway/src/main/java/com/pig4cloud/pigx/gateway/support/DynamicRouteEndpoint.java rename to pigx-common/pigx-common-gateway/src/main/java/com/pig4cloud/pigx/common/gateway/support/DynamicRouteEndpoint.java index d6a995dac..039ad3d79 100644 --- a/pigx-gateway/src/main/java/com/pig4cloud/pigx/gateway/support/DynamicRouteEndpoint.java +++ b/pigx-common/pigx-common-gateway/src/main/java/com/pig4cloud/pigx/common/gateway/support/DynamicRouteEndpoint.java @@ -15,7 +15,7 @@ * Author: lengleng (wangiegie@gmail.com) */ -package com.pig4cloud.pigx.gateway.support; +package com.pig4cloud.pigx.common.gateway.support; import cn.hutool.json.JSONObject; import com.pig4cloud.pigx.common.core.util.R; diff --git a/pigx-gateway/src/main/java/com/pig4cloud/pigx/gateway/support/DynamicRouteHandler.java b/pigx-common/pigx-common-gateway/src/main/java/com/pig4cloud/pigx/common/gateway/support/DynamicRouteHandler.java similarity index 97% rename from pigx-gateway/src/main/java/com/pig4cloud/pigx/gateway/support/DynamicRouteHandler.java rename to pigx-common/pigx-common-gateway/src/main/java/com/pig4cloud/pigx/common/gateway/support/DynamicRouteHandler.java index a87e5c1cb..d2eb30544 100644 --- a/pigx-gateway/src/main/java/com/pig4cloud/pigx/gateway/support/DynamicRouteHandler.java +++ b/pigx-common/pigx-common-gateway/src/main/java/com/pig4cloud/pigx/common/gateway/support/DynamicRouteHandler.java @@ -15,12 +15,12 @@ * Author: lengleng (wangiegie@gmail.com) */ -package com.pig4cloud.pigx.gateway.support; +package com.pig4cloud.pigx.common.gateway.support; import cn.hutool.json.JSONArray; import cn.hutool.json.JSONObject; import com.pig4cloud.pigx.common.core.constant.CommonConstant; -import com.pig4cloud.pigx.gateway.support.vo.RouteDefinitionVo; +import com.pig4cloud.pigx.common.gateway.vo.RouteDefinitionVo; import lombok.extern.slf4j.Slf4j; import org.springframework.cloud.gateway.event.RefreshRoutesEvent; import org.springframework.cloud.gateway.filter.FilterDefinition; diff --git a/pigx-gateway/src/main/java/com/pig4cloud/pigx/gateway/support/DynamicRouteInitEvent.java b/pigx-common/pigx-common-gateway/src/main/java/com/pig4cloud/pigx/common/gateway/support/DynamicRouteInitEvent.java similarity index 95% rename from pigx-gateway/src/main/java/com/pig4cloud/pigx/gateway/support/DynamicRouteInitEvent.java rename to pigx-common/pigx-common-gateway/src/main/java/com/pig4cloud/pigx/common/gateway/support/DynamicRouteInitEvent.java index 875cd7513..0dacfa92c 100644 --- a/pigx-gateway/src/main/java/com/pig4cloud/pigx/gateway/support/DynamicRouteInitEvent.java +++ b/pigx-common/pigx-common-gateway/src/main/java/com/pig4cloud/pigx/common/gateway/support/DynamicRouteInitEvent.java @@ -15,7 +15,7 @@ * Author: lengleng (wangiegie@gmail.com) */ -package com.pig4cloud.pigx.gateway.support; +package com.pig4cloud.pigx.common.gateway.support; import org.springframework.context.ApplicationEvent; diff --git a/pigx-gateway/src/main/java/com/pig4cloud/pigx/gateway/support/DynamicRouteInitRunner.java b/pigx-common/pigx-common-gateway/src/main/java/com/pig4cloud/pigx/common/gateway/support/DynamicRouteInitRunner.java similarity index 96% rename from pigx-gateway/src/main/java/com/pig4cloud/pigx/gateway/support/DynamicRouteInitRunner.java rename to pigx-common/pigx-common-gateway/src/main/java/com/pig4cloud/pigx/common/gateway/support/DynamicRouteInitRunner.java index 6230be4d6..dff5a6c3c 100644 --- a/pigx-gateway/src/main/java/com/pig4cloud/pigx/gateway/support/DynamicRouteInitRunner.java +++ b/pigx-common/pigx-common-gateway/src/main/java/com/pig4cloud/pigx/common/gateway/support/DynamicRouteInitRunner.java @@ -15,10 +15,10 @@ * Author: lengleng (wangiegie@gmail.com) */ -package com.pig4cloud.pigx.gateway.support; +package com.pig4cloud.pigx.common.gateway.support; import com.pig4cloud.pigx.common.core.constant.CommonConstant; -import com.pig4cloud.pigx.gateway.support.vo.RouteDefinitionVo; +import com.pig4cloud.pigx.common.gateway.vo.RouteDefinitionVo; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.BeanUtils; diff --git a/pigx-gateway/src/main/java/com/pig4cloud/pigx/gateway/support/RedisRouteDefinitionWriter.java b/pigx-common/pigx-common-gateway/src/main/java/com/pig4cloud/pigx/common/gateway/support/RedisRouteDefinitionWriter.java similarity index 95% rename from pigx-gateway/src/main/java/com/pig4cloud/pigx/gateway/support/RedisRouteDefinitionWriter.java rename to pigx-common/pigx-common-gateway/src/main/java/com/pig4cloud/pigx/common/gateway/support/RedisRouteDefinitionWriter.java index 98c603c9e..ccd3291e5 100644 --- a/pigx-gateway/src/main/java/com/pig4cloud/pigx/gateway/support/RedisRouteDefinitionWriter.java +++ b/pigx-common/pigx-common-gateway/src/main/java/com/pig4cloud/pigx/common/gateway/support/RedisRouteDefinitionWriter.java @@ -15,10 +15,10 @@ * Author: lengleng (wangiegie@gmail.com) */ -package com.pig4cloud.pigx.gateway.support; +package com.pig4cloud.pigx.common.gateway.support; import com.pig4cloud.pigx.common.core.constant.CommonConstant; -import com.pig4cloud.pigx.gateway.support.vo.RouteDefinitionVo; +import com.pig4cloud.pigx.common.gateway.vo.RouteDefinitionVo; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.BeanUtils; diff --git a/pigx-gateway/src/main/java/com/pig4cloud/pigx/gateway/support/vo/RouteDefinitionVo.java b/pigx-common/pigx-common-gateway/src/main/java/com/pig4cloud/pigx/common/gateway/vo/RouteDefinitionVo.java similarity index 95% rename from pigx-gateway/src/main/java/com/pig4cloud/pigx/gateway/support/vo/RouteDefinitionVo.java rename to pigx-common/pigx-common-gateway/src/main/java/com/pig4cloud/pigx/common/gateway/vo/RouteDefinitionVo.java index d97593763..08664e6c0 100644 --- a/pigx-gateway/src/main/java/com/pig4cloud/pigx/gateway/support/vo/RouteDefinitionVo.java +++ b/pigx-common/pigx-common-gateway/src/main/java/com/pig4cloud/pigx/common/gateway/vo/RouteDefinitionVo.java @@ -15,7 +15,8 @@ * Author: lengleng (wangiegie@gmail.com) */ -package com.pig4cloud.pigx.gateway.support.vo; +package com.pig4cloud.pigx.common.gateway.vo + ; import org.springframework.cloud.gateway.route.RouteDefinition; diff --git a/pigx-common/pom.xml b/pigx-common/pom.xml index 46dd898d2..ea1970619 100644 --- a/pigx-common/pom.xml +++ b/pigx-common/pom.xml @@ -36,6 +36,7 @@ pigx-common-cache pigx-common-core pigx-common-job + pigx-common-gateway pigx-common-log pigx-common-security pigx-common-swagger diff --git a/pigx-gateway/pom.xml b/pigx-gateway/pom.xml index 834819251..ffe9f08e3 100644 --- a/pigx-gateway/pom.xml +++ b/pigx-gateway/pom.xml @@ -42,6 +42,12 @@ org.springframework.boot spring-boot-starter-data-redis-reactive + + + com.pig4cloud + pigx-common-gateway + ${pigx.version} + org.springframework.cloud diff --git a/pigx-gateway/src/main/java/com/pig4cloud/pigx/gateway/PigxGatewayApplication.java b/pigx-gateway/src/main/java/com/pig4cloud/pigx/gateway/PigxGatewayApplication.java index 387740c2d..02f177187 100644 --- a/pigx-gateway/src/main/java/com/pig4cloud/pigx/gateway/PigxGatewayApplication.java +++ b/pigx-gateway/src/main/java/com/pig4cloud/pigx/gateway/PigxGatewayApplication.java @@ -20,6 +20,7 @@ package com.pig4cloud.pigx.gateway; +import com.pig4cloud.pigx.common.gateway.annotation.EnablePigxDynamicRoute; import org.springframework.boot.SpringApplication; import org.springframework.cloud.client.SpringCloudApplication; @@ -28,6 +29,7 @@ import org.springframework.cloud.client.SpringCloudApplication; * @date 2018年06月21日 * 网关应用 */ +@EnablePigxDynamicRoute @SpringCloudApplication public class PigxGatewayApplication {