Merge branch '5.3.x'
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2002-2021 the original author or authors.
|
||||
* Copyright 2002-2022 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
@@ -19,11 +19,10 @@ package org.springframework.web.servlet.function.support;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import jakarta.servlet.http.HttpServletRequest;
|
||||
|
||||
import org.springframework.beans.factory.BeanFactoryUtils;
|
||||
import org.springframework.beans.factory.InitializingBean;
|
||||
import org.springframework.context.ApplicationContext;
|
||||
import org.springframework.core.SpringProperties;
|
||||
@@ -135,7 +134,7 @@ public class RouterFunctionMapping extends AbstractHandlerMapping implements Ini
|
||||
@Override
|
||||
public void afterPropertiesSet() throws Exception {
|
||||
if (this.routerFunction == null) {
|
||||
initRouterFunction();
|
||||
initRouterFunctions();
|
||||
}
|
||||
if (CollectionUtils.isEmpty(this.messageConverters)) {
|
||||
initMessageConverters();
|
||||
@@ -154,20 +153,23 @@ public class RouterFunctionMapping extends AbstractHandlerMapping implements Ini
|
||||
* Detect a all {@linkplain RouterFunction router functions} in the
|
||||
* current application context.
|
||||
*/
|
||||
@SuppressWarnings({"rawtypes", "unchecked"})
|
||||
private void initRouterFunction() {
|
||||
ApplicationContext applicationContext = obtainApplicationContext();
|
||||
Map<String, RouterFunction> beans =
|
||||
(this.detectHandlerFunctionsInAncestorContexts ?
|
||||
BeanFactoryUtils.beansOfTypeIncludingAncestors(applicationContext, RouterFunction.class) :
|
||||
applicationContext.getBeansOfType(RouterFunction.class));
|
||||
List<RouterFunction> routerFunctions = new ArrayList<>(beans.values());
|
||||
private void initRouterFunctions() {
|
||||
List<RouterFunction<?>> routerFunctions = obtainApplicationContext()
|
||||
.getBeanProvider(RouterFunction.class)
|
||||
.orderedStream()
|
||||
.map(router -> (RouterFunction<?>) router)
|
||||
.collect(Collectors.toList());
|
||||
|
||||
ApplicationContext parentContext = obtainApplicationContext().getParent();
|
||||
if (parentContext != null && !this.detectHandlerFunctionsInAncestorContexts) {
|
||||
parentContext.getBeanProvider(RouterFunction.class).stream().forEach(routerFunctions::remove);
|
||||
}
|
||||
|
||||
this.routerFunction = routerFunctions.stream().reduce(RouterFunction::andOther).orElse(null);
|
||||
logRouterFunctions(routerFunctions);
|
||||
}
|
||||
|
||||
@SuppressWarnings("rawtypes")
|
||||
private void logRouterFunctions(List<RouterFunction> routerFunctions) {
|
||||
private void logRouterFunctions(List<RouterFunction<?>> routerFunctions) {
|
||||
if (mappingsLogger.isDebugEnabled()) {
|
||||
routerFunctions.forEach(function -> mappingsLogger.debug("Mapped " + function));
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user