diff --git a/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/data/web/SpringDataWebAutoConfiguration.java b/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/data/web/SpringDataWebAutoConfiguration.java index cb29717b3c..d9c53df41a 100644 --- a/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/data/web/SpringDataWebAutoConfiguration.java +++ b/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/data/web/SpringDataWebAutoConfiguration.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2014 the original author or authors. + * Copyright 2012-2015 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. @@ -25,6 +25,7 @@ import org.springframework.boot.autoconfigure.data.rest.RepositoryRestMvcAutoCon import org.springframework.context.annotation.Configuration; import org.springframework.data.web.PageableHandlerMethodArgumentResolver; import org.springframework.data.web.config.EnableSpringDataWebSupport; +import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter; /** * {@link EnableAutoConfiguration Auto-configuration} for Spring Data's web support. @@ -38,7 +39,8 @@ import org.springframework.data.web.config.EnableSpringDataWebSupport; @Configuration @EnableSpringDataWebSupport @ConditionalOnWebApplication -@ConditionalOnClass(PageableHandlerMethodArgumentResolver.class) +@ConditionalOnClass({ PageableHandlerMethodArgumentResolver.class, + WebMvcConfigurerAdapter.class }) @ConditionalOnMissingBean(PageableHandlerMethodArgumentResolver.class) @AutoConfigureAfter(RepositoryRestMvcAutoConfiguration.class) public class SpringDataWebAutoConfiguration { diff --git a/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/orm/jpa/JpaBaseConfiguration.java b/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/orm/jpa/JpaBaseConfiguration.java index 23bc4d34eb..eb195dde6b 100644 --- a/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/orm/jpa/JpaBaseConfiguration.java +++ b/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/orm/jpa/JpaBaseConfiguration.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2014 the original author or authors. + * Copyright 2012-2015 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. @@ -28,6 +28,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.config.ConfigurableListableBeanFactory; import org.springframework.boot.autoconfigure.AutoConfigurationPackages; import org.springframework.boot.autoconfigure.EnableAutoConfiguration; +import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.boot.autoconfigure.condition.ConditionalOnWebApplication; @@ -158,19 +159,27 @@ public abstract class JpaBaseConfiguration implements BeanFactoryAware { @Configuration @ConditionalOnWebApplication + @ConditionalOnClass(WebMvcConfigurerAdapter.class) @ConditionalOnMissingBean({ OpenEntityManagerInViewInterceptor.class, OpenEntityManagerInViewFilter.class }) @ConditionalOnProperty(prefix = "spring.jpa", name = "open-in-view", havingValue = "true", matchIfMissing = true) - protected static class JpaWebConfiguration extends WebMvcConfigurerAdapter { + protected static class JpaWebConfiguration { - @Override - public void addInterceptors(InterceptorRegistry registry) { - registry.addWebRequestInterceptor(openEntityManagerInViewInterceptor()); - } + // Defined as a nested config to ensure WebMvcConfigurerAdapter is not read when + // not on the classpath + @Configuration + protected static class JpaWebMvcConfiguration extends WebMvcConfigurerAdapter { + + @Bean + public OpenEntityManagerInViewInterceptor openEntityManagerInViewInterceptor() { + return new OpenEntityManagerInViewInterceptor(); + } + + @Override + public void addInterceptors(InterceptorRegistry registry) { + registry.addWebRequestInterceptor(openEntityManagerInViewInterceptor()); + } - @Bean - public OpenEntityManagerInViewInterceptor openEntityManagerInViewInterceptor() { - return new OpenEntityManagerInViewInterceptor(); } }