From 0c6fb4da0bd0e788f7a35b2ff909415a8e1eacbc Mon Sep 17 00:00:00 2001
From: DerekYRC <15521077528@163.com>
Date: Sun, 26 Jun 2022 20:49:13 +0800
Subject: [PATCH] =?UTF-8?q?API=E7=BD=91=E5=85=B3?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
mini-spring-cloud-netflix-zuul/pom.xml | 72 ++++++
.../cloud/netflix/zuul/EnableZuulProxy.java | 19 ++
.../zuul/ZuulProxyAutoConfiguration.java | 11 +
.../zuul/ZuulServerAutoConfiguration.java | 31 +++
.../netflix/zuul/filters/ZuulProperties.java | 33 +++
pom.xml | 226 ++++++++++--------
6 files changed, 286 insertions(+), 106 deletions(-)
create mode 100644 mini-spring-cloud-netflix-zuul/pom.xml
create mode 100644 mini-spring-cloud-netflix-zuul/src/main/java/com/github/cloud/netflix/zuul/EnableZuulProxy.java
create mode 100644 mini-spring-cloud-netflix-zuul/src/main/java/com/github/cloud/netflix/zuul/ZuulProxyAutoConfiguration.java
create mode 100644 mini-spring-cloud-netflix-zuul/src/main/java/com/github/cloud/netflix/zuul/ZuulServerAutoConfiguration.java
create mode 100644 mini-spring-cloud-netflix-zuul/src/main/java/com/github/cloud/netflix/zuul/filters/ZuulProperties.java
diff --git a/mini-spring-cloud-netflix-zuul/pom.xml b/mini-spring-cloud-netflix-zuul/pom.xml
new file mode 100644
index 0000000..6034937
--- /dev/null
+++ b/mini-spring-cloud-netflix-zuul/pom.xml
@@ -0,0 +1,72 @@
+
+
+
+ mini-spring-cloud
+ com.github
+ 1.0.0-SNAPSHOT
+
+ 4.0.0
+
+ mini-spring-cloud-netflix-zuul
+ 1.0.0-SNAPSHOT
+
+
+
+ com.netflix.zuul
+ zuul-core
+
+
+
+ org.springframework.boot
+ spring-boot-configuration-processor
+ true
+
+
+
+ org.springframework.boot
+ spring-boot
+ true
+
+
+
+ org.springframework.boot
+ spring-boot-autoconfigure
+ true
+
+
+
+ org.springframework.boot
+ spring-boot-starter
+ true
+
+
+
+ org.springframework.cloud
+ spring-cloud-commons
+
+
+
+ org.springframework.cloud
+ spring-cloud-context
+
+
+
+ org.springframework.boot
+ spring-boot-starter-web
+ test
+
+
+
+ cn.hutool
+ hutool-all
+
+
+
+ com.alibaba
+ fastjson
+
+
+
+
\ No newline at end of file
diff --git a/mini-spring-cloud-netflix-zuul/src/main/java/com/github/cloud/netflix/zuul/EnableZuulProxy.java b/mini-spring-cloud-netflix-zuul/src/main/java/com/github/cloud/netflix/zuul/EnableZuulProxy.java
new file mode 100644
index 0000000..c579530
--- /dev/null
+++ b/mini-spring-cloud-netflix-zuul/src/main/java/com/github/cloud/netflix/zuul/EnableZuulProxy.java
@@ -0,0 +1,19 @@
+package com.github.cloud.netflix.zuul;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+import org.springframework.context.annotation.Import;
+
+/**
+ * 启用zuul网关
+ * @author derek(易仁川)
+ * @date 2022/6/23
+ */
+@Target(ElementType.TYPE)
+@Retention(RetentionPolicy.RUNTIME)
+@Import(ZuulProxyAutoConfiguration.class)
+public @interface EnableZuulProxy {
+}
diff --git a/mini-spring-cloud-netflix-zuul/src/main/java/com/github/cloud/netflix/zuul/ZuulProxyAutoConfiguration.java b/mini-spring-cloud-netflix-zuul/src/main/java/com/github/cloud/netflix/zuul/ZuulProxyAutoConfiguration.java
new file mode 100644
index 0000000..2975afd
--- /dev/null
+++ b/mini-spring-cloud-netflix-zuul/src/main/java/com/github/cloud/netflix/zuul/ZuulProxyAutoConfiguration.java
@@ -0,0 +1,11 @@
+package com.github.cloud.netflix.zuul;
+
+import org.springframework.context.annotation.Configuration;
+
+/**
+ * @author derek(易仁川)
+ * @date 2022/6/23
+ */
+@Configuration
+public class ZuulProxyAutoConfiguration extends ZuulServerAutoConfiguration {
+}
diff --git a/mini-spring-cloud-netflix-zuul/src/main/java/com/github/cloud/netflix/zuul/ZuulServerAutoConfiguration.java b/mini-spring-cloud-netflix-zuul/src/main/java/com/github/cloud/netflix/zuul/ZuulServerAutoConfiguration.java
new file mode 100644
index 0000000..2df5002
--- /dev/null
+++ b/mini-spring-cloud-netflix-zuul/src/main/java/com/github/cloud/netflix/zuul/ZuulServerAutoConfiguration.java
@@ -0,0 +1,31 @@
+package com.github.cloud.netflix.zuul;
+
+import com.github.cloud.netflix.zuul.filters.ZuulProperties;
+import com.netflix.zuul.http.ZuulServlet;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.context.properties.EnableConfigurationProperties;
+import org.springframework.boot.web.servlet.ServletRegistrationBean;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+/**
+ * @author derek(易仁川)
+ * @date 2022/6/23
+ */
+@Configuration
+@EnableConfigurationProperties({ZuulProperties.class})
+public class ZuulServerAutoConfiguration {
+
+ @Autowired
+ protected ZuulProperties zuulProperties;
+
+ /**
+ * 注册ZuulServlet
+ * @return
+ */
+ @Bean
+ public ServletRegistrationBean zuulServlet() {
+ return new ServletRegistrationBean<>(new ZuulServlet(), zuulProperties.getServletPattern());
+ }
+}
diff --git a/mini-spring-cloud-netflix-zuul/src/main/java/com/github/cloud/netflix/zuul/filters/ZuulProperties.java b/mini-spring-cloud-netflix-zuul/src/main/java/com/github/cloud/netflix/zuul/filters/ZuulProperties.java
new file mode 100644
index 0000000..ccdf30c
--- /dev/null
+++ b/mini-spring-cloud-netflix-zuul/src/main/java/com/github/cloud/netflix/zuul/filters/ZuulProperties.java
@@ -0,0 +1,33 @@
+package com.github.cloud.netflix.zuul.filters;
+
+import org.springframework.boot.context.properties.ConfigurationProperties;
+
+/**
+ * @author derek(易仁川)
+ * @date 2022/6/23
+ */
+@ConfigurationProperties("zuul")
+public class ZuulProperties {
+
+ private String servletPath = "/zuul";
+
+
+ public String getServletPattern() {
+ String path = this.servletPath;
+ if (!path.startsWith("/")) {
+ path = "/" + path;
+ }
+ if (!path.contains("*")) {
+ path = path.endsWith("/") ? (path + "*") : (path + "/*");
+ }
+ return path;
+ }
+
+ String getServletPath() {
+ return servletPath;
+ }
+
+ void setServletPath(String servletPath) {
+ this.servletPath = servletPath;
+ }
+}
diff --git a/pom.xml b/pom.xml
index 3495d09..0a22c86 100644
--- a/pom.xml
+++ b/pom.xml
@@ -1,110 +1,124 @@
- 4.0.0
-
-
- org.springframework.cloud
- spring-cloud-build
- 3.1.1
-
-
-
- com.github
- mini-spring-cloud
- pom
- 1.0.0-SNAPSHOT
-
-
- mini-spring-cloud-examples/tutu-server
- mini-spring-cloud-tutu-discovery
- mini-spring-cloud-examples/mini-spring-cloud-provider-example
- mini-spring-cloud-examples/mini-spring-cloud-consumer-examples
- mini-spring-cloud-load-balancer
- mini-spring-cloud-openfeign
-
-
-
- 2021.0.1
- 1.2.79
- 5.7.21
- 2.3.0
- 11.8
-
-
-
-
-
- org.springframework.boot
- spring-boot-dependencies
- ${spring-boot.version}
- pom
- import
-
-
-
- org.springframework.cloud
- spring-cloud-dependencies
- ${spring.cloud.version}
- pom
- import
-
-
-
- com.github
- mini-spring-cloud-tutu-discovery
- 1.0.0-SNAPSHOT
-
-
-
- com.github
- mini-spring-cloud-load-balancer
- 1.0.0-SNAPSHOT
-
-
-
- com.github
- mini-spring-cloud-openfeign
- 1.0.0-SNAPSHOT
-
-
-
- com.alibaba
- fastjson
- ${fastjson.version}
-
-
-
- cn.hutool
- hutool-all
- ${hutool.version}
-
-
-
- com.netflix.ribbon
- ribbon
- ${ribbon.version}
-
-
-
- com.netflix.ribbon
- ribbon-loadbalancer
- ${ribbon.version}
-
-
-
- com.netflix.ribbon
- ribbon-core
- ${ribbon.version}
-
-
-
- io.github.openfeign
- feign-core
- ${feign.version}
-
-
-
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ 4.0.0
+
+
+ org.springframework.cloud
+ spring-cloud-build
+ 3.1.1
+
+
+
+ com.github
+ mini-spring-cloud
+ pom
+ 1.0.0-SNAPSHOT
+
+
+ mini-spring-cloud-examples/tutu-server
+ mini-spring-cloud-tutu-discovery
+ mini-spring-cloud-examples/mini-spring-cloud-provider-example
+ mini-spring-cloud-examples/mini-spring-cloud-consumer-examples
+ mini-spring-cloud-load-balancer
+ mini-spring-cloud-openfeign
+ mini-spring-cloud-netflix-zuul
+
+
+
+ 2021.0.1
+ 1.2.79
+ 5.7.21
+ 2.3.0
+ 11.8
+ 1.3.1
+
+
+
+
+
+ org.springframework.boot
+ spring-boot-dependencies
+ ${spring-boot.version}
+ pom
+ import
+
+
+
+ org.springframework.cloud
+ spring-cloud-dependencies
+ ${spring.cloud.version}
+ pom
+ import
+
+
+
+ com.github
+ mini-spring-cloud-tutu-discovery
+ 1.0.0-SNAPSHOT
+
+
+
+ com.github
+ mini-spring-cloud-load-balancer
+ 1.0.0-SNAPSHOT
+
+
+
+ com.github
+ mini-spring-cloud-openfeign
+ 1.0.0-SNAPSHOT
+
+
+
+ com.github
+ mini-spring-cloud-netflix-zuul
+ 1.0.0-SNAPSHOT
+
+
+
+ com.alibaba
+ fastjson
+ ${fastjson.version}
+
+
+
+ cn.hutool
+ hutool-all
+ ${hutool.version}
+
+
+
+ com.netflix.ribbon
+ ribbon
+ ${ribbon.version}
+
+
+
+ com.netflix.ribbon
+ ribbon-loadbalancer
+ ${ribbon.version}
+
+
+
+ com.netflix.ribbon
+ ribbon-core
+ ${ribbon.version}
+
+
+
+ io.github.openfeign
+ feign-core
+ ${feign.version}
+
+
+
+ com.netflix.zuul
+ zuul-core
+ ${zuul.version}
+
+
+
\ No newline at end of file