Skip to content

Commit f87eefa

Browse files
committed
《Spring Cloud实战》更新
1 parent b155fae commit f87eefa

File tree

31 files changed

+1038
-0
lines changed

31 files changed

+1038
-0
lines changed

spring_cloud_in_action/README.md

Whitespace-only changes.
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
package com.didispace.filter.post
2+
3+
import org.slf4j.Logger
4+
import org.slf4j.LoggerFactory
5+
6+
import com.netflix.zuul.ZuulFilter
7+
8+
class PostFilter extends ZuulFilter{
9+
10+
Logger log = LoggerFactory.getLogger(PostFilter.class);
11+
12+
@Override
13+
String filterType() {
14+
return "post"
15+
}
16+
17+
@Override
18+
int filterOrder() {
19+
return 2000
20+
}
21+
22+
@Override
23+
boolean shouldFilter() {
24+
return true
25+
}
26+
27+
@Override
28+
Object run() {
29+
log.info("this is a post filter aaaaaaa");
30+
}
31+
}
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
package com.didispace.filter.pre
2+
3+
import org.slf4j.Logger
4+
import org.slf4j.LoggerFactory;
5+
6+
import javax.servlet.http.HttpServletRequest;
7+
8+
import com.netflix.zuul.ZuulFilter;
9+
import com.netflix.zuul.context.RequestContext;
10+
11+
class PreFilter extends ZuulFilter {
12+
13+
Logger log = LoggerFactory.getLogger(PreFilter.class);
14+
15+
@Override
16+
String filterType() {
17+
return "pre"
18+
}
19+
20+
@Override
21+
int filterOrder() {
22+
return 1000
23+
}
24+
25+
@Override
26+
boolean shouldFilter() {
27+
return true
28+
}
29+
30+
@Override
31+
Object run() {
32+
log.info("this is a pre filter")
33+
HttpServletRequest request = RequestContext.getCurrentContext().getRequest()
34+
log.info(String.format("send %s request to %s", request.getMethod(), request.getRequestURL().toString()))
35+
return null
36+
}
37+
}
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
package com.didispace.filter.post
2+
3+
import com.netflix.zuul.ZuulFilter
4+
import com.netflix.zuul.context.RequestContext
5+
import com.netflix.zuul.http.HttpServletResponseWrapper
6+
import org.slf4j.Logger
7+
import org.slf4j.LoggerFactory
8+
import org.springframework.cloud.netflix.zuul.util.RequestUtils
9+
10+
import javax.servlet.http.HttpServletResponse
11+
12+
class PostFilter extends ZuulFilter{
13+
14+
Logger log = LoggerFactory.getLogger(PostFilter.class)
15+
16+
@Override
17+
String filterType() {
18+
return "post"
19+
}
20+
21+
@Override
22+
int filterOrder() {
23+
return 2000
24+
}
25+
26+
@Override
27+
boolean shouldFilter() {
28+
return true
29+
}
30+
31+
@Override
32+
Object run() {
33+
log.info("debug request : {}", RequestContext.getCurrentContext().getBoolean("debugRequest"))
34+
log.info("this is a post filter: Receive response")
35+
HttpServletResponse response = RequestContext.getCurrentContext().getResponse()
36+
response.getOutputStream().print(", I am zhaiyongchao")
37+
response.flushBuffer()
38+
}
39+
}
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
package com.didispace.filter.pre
2+
3+
import org.slf4j.Logger
4+
import org.slf4j.LoggerFactory;
5+
6+
import javax.servlet.http.HttpServletRequest;
7+
8+
import com.netflix.zuul.ZuulFilter;
9+
import com.netflix.zuul.context.RequestContext;
10+
11+
class PreFilter extends ZuulFilter {
12+
13+
Logger log = LoggerFactory.getLogger(PreFilter.class)
14+
15+
@Override
16+
String filterType() {
17+
return "pre"
18+
}
19+
20+
@Override
21+
int filterOrder() {
22+
return 1000
23+
}
24+
25+
@Override
26+
boolean shouldFilter() {
27+
return true
28+
}
29+
30+
@Override
31+
Object run() {
32+
HttpServletRequest request = RequestContext.getCurrentContext().getRequest()
33+
log.info("this is a pre filter: Send {} request to {}", request.getMethod(), request.getRequestURL().toString())
34+
return null
35+
}
36+
37+
}
Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
3+
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
4+
<modelVersion>4.0.0</modelVersion>
5+
6+
<groupId>com.didispace</groupId>
7+
<artifactId>api-gateway-dynamic-filter</artifactId>
8+
<version>1.0.0</version>
9+
<packaging>jar</packaging>
10+
11+
<name>api-gateway-dynamic-filter</name>
12+
<description>Spring Cloud project</description>
13+
14+
<parent>
15+
<groupId>org.springframework.boot</groupId>
16+
<artifactId>spring-boot-starter-parent</artifactId>
17+
<version>1.3.7.RELEASE</version>
18+
<relativePath/> <!-- lookup parent from repository -->
19+
</parent>
20+
21+
<properties>
22+
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
23+
<java.version>1.8</java.version>
24+
</properties>
25+
26+
<dependencies>
27+
28+
<dependency>
29+
<groupId>org.springframework.cloud</groupId>
30+
<artifactId>spring-cloud-starter-zuul</artifactId>
31+
</dependency>
32+
33+
<dependency>
34+
<groupId>org.springframework.cloud</groupId>
35+
<artifactId>spring-cloud-starter-eureka</artifactId>
36+
</dependency>
37+
38+
<dependency>
39+
<groupId>org.codehaus.groovy</groupId>
40+
<artifactId>groovy-all</artifactId>
41+
</dependency>
42+
</dependencies>
43+
44+
<dependencyManagement>
45+
<dependencies>
46+
<dependency>
47+
<groupId>org.springframework.cloud</groupId>
48+
<artifactId>spring-cloud-dependencies</artifactId>
49+
<version>Brixton.SR5</version>
50+
<type>pom</type>
51+
<scope>import</scope>
52+
</dependency>
53+
</dependencies>
54+
</dependencyManagement>
55+
56+
<build>
57+
<plugins>
58+
<plugin>
59+
<groupId>org.springframework.boot</groupId>
60+
<artifactId>spring-boot-maven-plugin</artifactId>
61+
</plugin>
62+
</plugins>
63+
</build>
64+
65+
</project>
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
package com.didispace;
2+
3+
import com.netflix.zuul.FilterFileManager;
4+
import com.netflix.zuul.FilterLoader;
5+
import com.netflix.zuul.groovy.GroovyCompiler;
6+
import com.netflix.zuul.groovy.GroovyFileFilter;
7+
import org.springframework.boot.builder.SpringApplicationBuilder;
8+
import org.springframework.boot.context.properties.EnableConfigurationProperties;
9+
import org.springframework.cloud.client.SpringCloudApplication;
10+
import org.springframework.cloud.netflix.zuul.EnableZuulProxy;
11+
import org.springframework.context.annotation.Bean;
12+
13+
@EnableZuulProxy
14+
@EnableConfigurationProperties({FilterConfiguration.class})
15+
@SpringCloudApplication
16+
public class Application {
17+
18+
public static void main(String[] args) {
19+
new SpringApplicationBuilder(Application.class).web(true).run(args);
20+
}
21+
22+
@Bean
23+
public FilterLoader filterLoader(FilterConfiguration filterConfiguration) {
24+
FilterLoader filterLoader = FilterLoader.getInstance();
25+
filterLoader.setCompiler(new GroovyCompiler());
26+
try {
27+
FilterFileManager.setFilenameFilter(new GroovyFileFilter());
28+
FilterFileManager.init(
29+
filterConfiguration.getInterval(),
30+
filterConfiguration.getRoot() + "/pre",
31+
filterConfiguration.getRoot() + "/post");
32+
} catch (Exception e) {
33+
throw new RuntimeException(e);
34+
}
35+
return filterLoader;
36+
}
37+
38+
}
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
package com.didispace;
2+
3+
import org.springframework.boot.context.properties.ConfigurationProperties;
4+
5+
/**
6+
* @author 翟永超
7+
* @create 2016/12/11.
8+
* @blog http://blog.didispace.com
9+
*/
10+
@ConfigurationProperties("zuul.filter")
11+
public class FilterConfiguration {
12+
13+
private String root;
14+
private Integer interval;
15+
16+
public String getRoot() {
17+
return root;
18+
}
19+
20+
public void setRoot(String root) {
21+
this.root = root;
22+
}
23+
24+
public Integer getInterval() {
25+
return interval;
26+
}
27+
28+
public void setInterval(Integer interval) {
29+
this.interval = interval;
30+
}
31+
}
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
spring.application.name=api-gateway
2+
server.port=5555
3+
4+
eureka.client.serviceUrl.defaultZone=http://localhost:1111/eureka/
5+
6+
zuul.filter.root=filter
7+
zuul.filter.interval=5
8+
9+
#zuul.debug.request=true
Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
3+
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
4+
<modelVersion>4.0.0</modelVersion>
5+
6+
<groupId>com.didispace</groupId>
7+
<artifactId>api-gateway-dynamic-route</artifactId>
8+
<version>1.0.0</version>
9+
<packaging>jar</packaging>
10+
11+
<name>api-gateway-dynamic-route</name>
12+
<description>Spring Cloud project</description>
13+
14+
<parent>
15+
<groupId>org.springframework.boot</groupId>
16+
<artifactId>spring-boot-starter-parent</artifactId>
17+
<version>1.3.7.RELEASE</version>
18+
<relativePath/> <!-- lookup parent from repository -->
19+
</parent>
20+
21+
<properties>
22+
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
23+
<java.version>1.8</java.version>
24+
</properties>
25+
26+
<dependencies>
27+
28+
<dependency>
29+
<groupId>org.springframework.cloud</groupId>
30+
<artifactId>spring-cloud-starter-zuul</artifactId>
31+
</dependency>
32+
33+
<dependency>
34+
<groupId>org.springframework.cloud</groupId>
35+
<artifactId>spring-cloud-starter-eureka</artifactId>
36+
</dependency>
37+
38+
<dependency>
39+
<groupId>org.springframework.cloud</groupId>
40+
<artifactId>spring-cloud-starter-config</artifactId>
41+
</dependency>
42+
43+
</dependencies>
44+
45+
<dependencyManagement>
46+
<dependencies>
47+
<dependency>
48+
<groupId>org.springframework.cloud</groupId>
49+
<artifactId>spring-cloud-dependencies</artifactId>
50+
<version>Brixton.SR5</version>
51+
<type>pom</type>
52+
<scope>import</scope>
53+
</dependency>
54+
</dependencies>
55+
</dependencyManagement>
56+
57+
<build>
58+
<plugins>
59+
<plugin>
60+
<groupId>org.springframework.boot</groupId>
61+
<artifactId>spring-boot-maven-plugin</artifactId>
62+
</plugin>
63+
</plugins>
64+
</build>
65+
66+
</project>
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
package com.didispace;
2+
3+
import org.springframework.boot.builder.SpringApplicationBuilder;
4+
import org.springframework.boot.context.properties.ConfigurationProperties;
5+
import org.springframework.cloud.client.SpringCloudApplication;
6+
import org.springframework.cloud.context.config.annotation.RefreshScope;
7+
import org.springframework.cloud.netflix.zuul.EnableZuulProxy;
8+
import org.springframework.cloud.netflix.zuul.filters.ZuulProperties;
9+
import org.springframework.context.annotation.Bean;
10+
11+
@EnableZuulProxy
12+
@SpringCloudApplication
13+
public class Application {
14+
15+
public static void main(String[] args) {
16+
new SpringApplicationBuilder(Application.class).web(true).run(args);
17+
}
18+
19+
@Bean
20+
@RefreshScope
21+
@ConfigurationProperties("zuul")
22+
public ZuulProperties zuulProperties() {
23+
return new ZuulProperties();
24+
}
25+
26+
}

0 commit comments

Comments
 (0)