1515 */
1616package de .codecentric .boot .admin .config ;
1717
18- import java .util .Map ;
19-
2018import org .springframework .beans .factory .annotation .Autowired ;
2119import org .springframework .boot .actuate .trace .TraceRepository ;
2220import org .springframework .boot .autoconfigure .web .ServerProperties ;
23- import org .springframework .cloud .netflix .zuul .ZuulFilterInitializer ;
21+ import org .springframework .cloud .netflix .zuul .ZuulConfiguration ;
2422import 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 ;
3023import org .springframework .cloud .netflix .zuul .filters .route .SimpleHostRoutingFilter ;
31- import org .springframework .cloud .netflix .zuul .web .ZuulController ;
3224import 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 ;
3328import org .springframework .context .annotation .Bean ;
3429import org .springframework .context .annotation .Configuration ;
35- import org .springframework .context .event .EventListener ;
36-
37- import com .netflix .zuul .ZuulFilter ;
3830
3931import de .codecentric .boot .admin .controller .RegistryController ;
4032import de .codecentric .boot .admin .event .RoutesOutdatedEvent ;
4335import 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