Skip to content

Commit 82dc7bc

Browse files
committed
HypermediaAutoConfiguration should back off when Spring MVC absent
Fixes gh-19392
1 parent 87dd115 commit 82dc7bc

File tree

2 files changed

+9
-1
lines changed

2 files changed

+9
-1
lines changed

spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/hateoas/HypermediaAutoConfiguration.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@
3636
import org.springframework.hateoas.config.EnableHypermediaSupport.HypermediaType;
3737
import org.springframework.plugin.core.Plugin;
3838
import org.springframework.web.bind.annotation.RequestMapping;
39+
import org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter;
3940

4041
/**
4142
* {@link EnableAutoConfiguration Auto-configuration} for Spring HATEOAS's
@@ -47,7 +48,7 @@
4748
* @since 1.1.0
4849
*/
4950
@Configuration(proxyBeanMethods = false)
50-
@ConditionalOnClass({ EntityModel.class, RequestMapping.class, Plugin.class })
51+
@ConditionalOnClass({ EntityModel.class, RequestMapping.class, RequestMappingHandlerAdapter.class, Plugin.class })
5152
@ConditionalOnWebApplication
5253
@AutoConfigureAfter({ WebMvcAutoConfiguration.class, JacksonAutoConfiguration.class,
5354
HttpMessageConvertersAutoConfiguration.class, RepositoryRestMvcAutoConfiguration.class })

spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/hateoas/HypermediaAutoConfigurationTests.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
import org.springframework.boot.autoconfigure.http.HttpMessageConvertersAutoConfiguration;
2626
import org.springframework.boot.autoconfigure.jackson.JacksonAutoConfiguration;
2727
import org.springframework.boot.autoconfigure.web.servlet.WebMvcAutoConfiguration;
28+
import org.springframework.boot.test.context.FilteredClassLoader;
2829
import org.springframework.boot.test.context.runner.WebApplicationContextRunner;
2930
import org.springframework.context.annotation.Configuration;
3031
import org.springframework.hateoas.MediaTypes;
@@ -54,6 +55,12 @@ class HypermediaAutoConfigurationTests {
5455
private WebApplicationContextRunner contextRunner = new WebApplicationContextRunner()
5556
.withUserConfiguration(BaseConfig.class);
5657

58+
@Test
59+
void autoConfigurationWhenSpringMvcNotOnClasspathShouldBackOff() {
60+
this.contextRunner.withClassLoader(new FilteredClassLoader(RequestMappingHandlerAdapter.class))
61+
.run((context) -> assertThat(context.getBeansOfType(HypermediaConfiguration.class)).isEmpty());
62+
}
63+
5764
@Test
5865
void linkDiscoverersCreated() {
5966
this.contextRunner.run((context) -> {

0 commit comments

Comments
 (0)