Skip to content
This repository was archived by the owner on Jun 29, 2018. It is now read-only.

Commit 0db4fe1

Browse files
committed
Reduce duplicated ZuulConfiguration by inheriting
1 parent 8a6cdfa commit 0db4fe1

1 file changed

Lines changed: 21 additions & 62 deletions

File tree

spring-boot-admin-server/src/main/java/de/codecentric/boot/admin/config/RevereseZuulProxyConfiguration.java

Lines changed: 21 additions & 62 deletions
Original file line numberDiff line numberDiff line change
@@ -15,26 +15,18 @@
1515
*/
1616
package de.codecentric.boot.admin.config;
1717

18-
import java.util.Map;
19-
2018
import org.springframework.beans.factory.annotation.Autowired;
2119
import org.springframework.boot.actuate.trace.TraceRepository;
2220
import org.springframework.boot.autoconfigure.web.ServerProperties;
23-
import org.springframework.cloud.netflix.zuul.ZuulFilterInitializer;
21+
import org.springframework.cloud.netflix.zuul.ZuulConfiguration;
2422
import org.springframework.cloud.netflix.zuul.filters.ProxyRequestHelper;
25-
import org.springframework.cloud.netflix.zuul.filters.post.SendErrorFilter;
26-
import org.springframework.cloud.netflix.zuul.filters.post.SendResponseFilter;
27-
import org.springframework.cloud.netflix.zuul.filters.pre.DebugFilter;
28-
import org.springframework.cloud.netflix.zuul.filters.pre.FormBodyWrapperFilter;
29-
import org.springframework.cloud.netflix.zuul.filters.pre.Servlet30WrapperFilter;
3023
import org.springframework.cloud.netflix.zuul.filters.route.SimpleHostRoutingFilter;
31-
import org.springframework.cloud.netflix.zuul.web.ZuulController;
3224
import org.springframework.cloud.netflix.zuul.web.ZuulHandlerMapping;
25+
import org.springframework.context.ApplicationEvent;
26+
import org.springframework.context.ApplicationListener;
27+
import org.springframework.context.PayloadApplicationEvent;
3328
import org.springframework.context.annotation.Bean;
3429
import org.springframework.context.annotation.Configuration;
35-
import org.springframework.context.event.EventListener;
36-
37-
import com.netflix.zuul.ZuulFilter;
3830

3931
import de.codecentric.boot.admin.controller.RegistryController;
4032
import de.codecentric.boot.admin.event.RoutesOutdatedEvent;
@@ -43,7 +35,7 @@
4335
import de.codecentric.boot.admin.zuul.PreDecorationFilter;
4436

4537
@Configuration
46-
public class RevereseZuulProxyConfiguration {
38+
public class RevereseZuulProxyConfiguration extends ZuulConfiguration {
4739

4840
@Autowired(required = false)
4941
private TraceRepository traces;
@@ -55,6 +47,7 @@ public class RevereseZuulProxyConfiguration {
5547
private ApplicationRegistry registry;
5648

5749
@Bean
50+
@Override
5851
public ApplicationRouteLocator routeLocator() {
5952
return new ApplicationRouteLocator(this.server.getServletPrefix(), registry,
6053
RegistryController.PATH);
@@ -75,59 +68,25 @@ public SimpleHostRoutingFilter simpleHostRoutingFilter() {
7568
}
7669

7770
@Bean
78-
public ZuulController zuulController() {
79-
return new ZuulController();
80-
}
81-
82-
@Bean
83-
public ZuulHandlerMapping zuulHandlerMapping() {
84-
return new ZuulHandlerMapping(routeLocator(), zuulController());
85-
}
86-
87-
// pre filters
88-
89-
@Bean
90-
public FormBodyWrapperFilter formBodyWrapperFilter() {
91-
return new FormBodyWrapperFilter();
92-
}
93-
94-
@Bean
95-
public DebugFilter debugFilter() {
96-
return new DebugFilter();
97-
}
98-
99-
@Bean
100-
public Servlet30WrapperFilter servlet30WrapperFilter() {
101-
return new Servlet30WrapperFilter();
71+
@Override
72+
public ApplicationListener<ApplicationEvent> zuulRefreshRoutesListener() {
73+
return new ZuulRefreshListener();
10274
}
10375

104-
// post filters
105-
106-
@Bean
107-
public SendResponseFilter sendResponseFilter() {
108-
return new SendResponseFilter();
109-
}
110-
111-
@Bean
112-
public SendErrorFilter sendErrorFilter() {
113-
return new SendErrorFilter();
114-
}
115-
116-
@Configuration
117-
protected static class ZuulFilterConfiguration {
76+
private static class ZuulRefreshListener implements ApplicationListener<ApplicationEvent> {
11877
@Autowired
119-
private Map<String, ZuulFilter> filters;
78+
private ZuulHandlerMapping zuulHandlerMapping;
12079

121-
@Bean
122-
public ZuulFilterInitializer zuulFilterInitializer() {
123-
return new ZuulFilterInitializer(this.filters);
80+
@Autowired
81+
private ApplicationRouteLocator routeLocator;
82+
83+
@Override
84+
public void onApplicationEvent(ApplicationEvent event) {
85+
if (event instanceof PayloadApplicationEvent && ((PayloadApplicationEvent<?>) event)
86+
.getPayload() instanceof RoutesOutdatedEvent) {
87+
routeLocator.resetRoutes();
88+
zuulHandlerMapping.registerHandlers();
89+
}
12490
}
12591
}
126-
127-
@EventListener
128-
public void onRoutesOutdatedEvent(RoutesOutdatedEvent event) {
129-
routeLocator().resetRoutes();
130-
zuulHandlerMapping().registerHandlers();
131-
}
132-
13392
}

0 commit comments

Comments
 (0)