Browse Source

Merge branch '3.4.x' into 3.5.x

Closes gh-46180
pull/46457/head
Andy Wilkinson 7 months ago
parent
commit
e9033a81c7
  1. 15
      spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/web/embedded/EmbeddedWebServerFactoryCustomizerAutoConfiguration.java
  2. 9
      spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/web/embedded/UndertowWebServerFactoryCustomizerConfigurationTests.java

15
spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/web/embedded/EmbeddedWebServerFactoryCustomizerAutoConfiguration.java

@ -17,6 +17,7 @@ @@ -17,6 +17,7 @@
package org.springframework.boot.autoconfigure.web.embedded;
import io.undertow.Undertow;
import io.undertow.servlet.api.DeploymentInfo;
import org.apache.catalina.startup.Tomcat;
import org.apache.coyote.UpgradeProtocol;
import org.eclipse.jetty.ee10.webapp.WebAppContext;
@ -110,10 +111,16 @@ public class EmbeddedWebServerFactoryCustomizerAutoConfiguration { @@ -110,10 +111,16 @@ public class EmbeddedWebServerFactoryCustomizerAutoConfiguration {
return new UndertowWebServerFactoryCustomizer(environment, serverProperties);
}
@Bean
@ConditionalOnThreading(Threading.VIRTUAL)
UndertowDeploymentInfoCustomizer virtualThreadsUndertowDeploymentInfoCustomizer() {
return (deploymentInfo) -> deploymentInfo.setExecutor(new VirtualThreadTaskExecutor("undertow-"));
@Configuration(proxyBeanMethods = false)
@ConditionalOnClass(DeploymentInfo.class)
static class UndertowServletWebServerFactoryCustomizerConfiguration {
@Bean
@ConditionalOnThreading(Threading.VIRTUAL)
UndertowDeploymentInfoCustomizer virtualThreadsUndertowDeploymentInfoCustomizer() {
return (deploymentInfo) -> deploymentInfo.setExecutor(new VirtualThreadTaskExecutor("undertow-"));
}
}
}

9
spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/web/embedded/UndertowWebServerFactoryCustomizerConfigurationTests.java

@ -23,6 +23,7 @@ import org.junit.jupiter.api.condition.JRE; @@ -23,6 +23,7 @@ import org.junit.jupiter.api.condition.JRE;
import org.springframework.boot.autoconfigure.AutoConfigurations;
import org.springframework.boot.autoconfigure.web.embedded.EmbeddedWebServerFactoryCustomizerAutoConfiguration.UndertowWebServerFactoryCustomizerConfiguration;
import org.springframework.boot.test.context.FilteredClassLoader;
import org.springframework.boot.test.context.runner.WebApplicationContextRunner;
import org.springframework.boot.web.embedded.undertow.UndertowDeploymentInfoCustomizer;
import org.springframework.boot.web.servlet.context.AnnotationConfigServletWebApplicationContext;
@ -54,4 +55,12 @@ class UndertowWebServerFactoryCustomizerConfigurationTests { @@ -54,4 +55,12 @@ class UndertowWebServerFactoryCustomizerConfigurationTests {
});
}
@Test
@EnabledForJreRange(min = JRE.JAVA_21)
void virtualThreadCustomizationBacksOffWithoutUndertowServlet() {
this.contextRunner.withPropertyValues("spring.threads.virtual.enabled=true")
.withClassLoader(new FilteredClassLoader("io.undertow.servlet"))
.run((context) -> assertThat(context).doesNotHaveBean(UndertowDeploymentInfoCustomizer.class));
}
}

Loading…
Cancel
Save