@@ -154,35 +154,20 @@ public void afterPropertiesSet() throws Exception {
154
154
* current application context.
155
155
*/
156
156
private void initRouterFunctions () {
157
- List <RouterFunction <?>> routerFunctions = routerFunctions ();
157
+ List <RouterFunction <?>> routerFunctions = new ArrayList <>();
158
+ detectRouterFunctions (obtainApplicationContext (), routerFunctions );
158
159
this .routerFunction = routerFunctions .stream ().reduce (RouterFunction ::andOther ).orElse (null );
159
160
logRouterFunctions (routerFunctions );
160
161
}
161
162
162
- private List <RouterFunction <?>> routerFunctions () {
163
- List <RouterFunction <?>> routerFunctions = new ArrayList <>();
164
- if (this .detectHandlerFunctionsInAncestorContexts ) {
165
- detectRouterFunctionsInAncestorContexts (obtainApplicationContext (), routerFunctions );
163
+ private void detectRouterFunctions (ApplicationContext context , List <RouterFunction <?>> routerFunctions ) {
164
+ if (this .detectHandlerFunctionsInAncestorContexts && context .getParent () != null ) {
165
+ detectRouterFunctions (context .getParent (), routerFunctions );
166
166
}
167
- obtainApplicationContext ()
168
- .getBeanProvider (RouterFunction .class )
167
+ context .getBeanProvider (RouterFunction .class )
169
168
.orderedStream ()
170
169
.map (router -> (RouterFunction <?>) router )
171
170
.collect (Collectors .toCollection (() -> routerFunctions ));
172
- return routerFunctions ;
173
- }
174
-
175
- private void detectRouterFunctionsInAncestorContexts (
176
- ApplicationContext applicationContext , List <RouterFunction <?>> routerFunctions ) {
177
-
178
- ApplicationContext parentContext = applicationContext .getParent ();
179
- if (parentContext != null ) {
180
- detectRouterFunctionsInAncestorContexts (parentContext , routerFunctions );
181
- parentContext .getBeanProvider (RouterFunction .class )
182
- .orderedStream ()
183
- .map (router -> (RouterFunction <?>) router )
184
- .collect (Collectors .toCollection (() -> routerFunctions ));
185
- }
186
171
}
187
172
188
173
private void logRouterFunctions (List <RouterFunction <?>> routerFunctions ) {
0 commit comments