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