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 {