Browse Source

Cache management port type in EndpointRequestMatcher

Closes gh-20329
pull/29297/head
Madhura Bhave 6 years ago
parent
commit
cdae79dad9
  1. 7
      spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/security/reactive/EndpointRequest.java
  2. 8
      spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/security/servlet/EndpointRequest.java

7
spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/security/reactive/EndpointRequest.java

@ -130,6 +130,8 @@ public final class EndpointRequest { @@ -130,6 +130,8 @@ public final class EndpointRequest {
private volatile ServerWebExchangeMatcher delegate;
private static ManagementPortType managementPortType;
private EndpointServerWebExchangeMatcher(boolean includeLinks) {
this(Collections.emptyList(), Collections.emptyList(), includeLinks);
}
@ -231,7 +233,10 @@ public final class EndpointRequest { @@ -231,7 +233,10 @@ public final class EndpointRequest {
static boolean isManagementContext(ServerWebExchange exchange) {
ApplicationContext applicationContext = exchange.getApplicationContext();
if (ManagementPortType.get(applicationContext.getEnvironment()) == ManagementPortType.DIFFERENT) {
if (managementPortType == null) {
managementPortType = ManagementPortType.get(applicationContext.getEnvironment());
}
if (managementPortType == ManagementPortType.DIFFERENT) {
if (applicationContext.getParent() == null) {
return false;
}

8
spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/security/servlet/EndpointRequest.java

@ -124,14 +124,18 @@ public final class EndpointRequest { @@ -124,14 +124,18 @@ public final class EndpointRequest {
private volatile RequestMatcher delegate;
private static ManagementPortType managementPortType;
AbstractRequestMatcher() {
super(WebApplicationContext.class);
}
@Override
protected boolean ignoreApplicationContext(WebApplicationContext applicationContext) {
ManagementPortType type = ManagementPortType.get(applicationContext.getEnvironment());
return type == ManagementPortType.DIFFERENT
if (managementPortType == null) {
managementPortType = ManagementPortType.get(applicationContext.getEnvironment());
}
return managementPortType == ManagementPortType.DIFFERENT
&& !WebServerApplicationContext.hasServerNamespace(applicationContext, "management");
}

Loading…
Cancel
Save