diff --git a/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/thymeleaf/ThymeleafAutoConfiguration.java b/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/thymeleaf/ThymeleafAutoConfiguration.java index e497a68b573..6db961ccc1c 100644 --- a/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/thymeleaf/ThymeleafAutoConfiguration.java +++ b/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/thymeleaf/ThymeleafAutoConfiguration.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2023 the original author or authors. + * Copyright 2012-2025 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. @@ -56,6 +56,7 @@ import org.springframework.security.web.server.csrf.CsrfToken; import org.springframework.util.MimeType; import org.springframework.util.unit.DataSize; import org.springframework.web.servlet.resource.ResourceUrlEncodingFilter; +import org.springframework.web.servlet.view.AbstractCachingViewResolver; /** * {@link EnableAutoConfiguration Auto-configuration} for Thymeleaf. @@ -142,6 +143,7 @@ public class ThymeleafAutoConfiguration { } @Configuration(proxyBeanMethods = false) + @ConditionalOnClass(AbstractCachingViewResolver.class) static class ThymeleafViewResolverConfiguration { @Bean diff --git a/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/thymeleaf/ThymeleafServletAutoConfigurationTests.java b/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/thymeleaf/ThymeleafServletAutoConfigurationTests.java index 4ddea183ca2..9f58eefb4a5 100644 --- a/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/thymeleaf/ThymeleafServletAutoConfigurationTests.java +++ b/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/thymeleaf/ThymeleafServletAutoConfigurationTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2023 the original author or authors. + * Copyright 2012-2025 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. @@ -60,6 +60,7 @@ import org.springframework.test.util.ReflectionTestUtils; import org.springframework.web.servlet.ViewResolver; import org.springframework.web.servlet.resource.ResourceUrlEncodingFilter; import org.springframework.web.servlet.support.RequestContext; +import org.springframework.web.servlet.view.AbstractCachingViewResolver; import static org.assertj.core.api.Assertions.assertThat; @@ -336,6 +337,12 @@ class ThymeleafServletAutoConfigurationTests { }); } + @Test + void missingAbstractCachingViewResolver() { + this.contextRunner.withClassLoader(new FilteredClassLoader(AbstractCachingViewResolver.class)) + .run((context) -> assertThat(context).hasNotFailed().doesNotHaveBean("thymeleafViewResolver")); + } + @Configuration(proxyBeanMethods = false) static class LayoutDialectConfiguration {