diff --git a/spring-boot-project/spring-boot-data-cassandra/build.gradle b/spring-boot-project/spring-boot-data-cassandra/build.gradle index 9e7502ea77e..beae2aa14c8 100644 --- a/spring-boot-project/spring-boot-data-cassandra/build.gradle +++ b/spring-boot-project/spring-boot-data-cassandra/build.gradle @@ -28,6 +28,7 @@ description = "Spring Boot Data Cassandra" dependencies { api(project(":spring-boot-project:spring-boot-cassandra")) + api(project(":spring-boot-project:spring-boot-data-commons")) api("org.springframework.data:spring-data-cassandra") { exclude group: "org.slf4j", module: "jcl-over-slf4j" } diff --git a/spring-boot-project/spring-boot-data-commons/build.gradle b/spring-boot-project/spring-boot-data-commons/build.gradle index 5f9a8ab1595..43a71e89d16 100644 --- a/spring-boot-project/spring-boot-data-commons/build.gradle +++ b/spring-boot-project/spring-boot-data-commons/build.gradle @@ -30,13 +30,13 @@ dependencies { api("org.springframework.data:spring-data-commons") optional(project(":spring-boot-project:spring-boot-autoconfigure")) - optional(project(":spring-boot-project:spring-boot-data-rest")) optional(project(":spring-boot-project:spring-boot-metrics")) - testImplementation(project(":spring-boot-project:spring-boot-data-jpa")) + testImplementation(project(":spring-boot-project:spring-boot-jdbc")) testImplementation(project(":spring-boot-project:spring-boot-test")) testImplementation(project(":spring-boot-project:spring-boot-tools:spring-boot-test-support")) testImplementation(testFixtures(project(":spring-boot-project:spring-boot-autoconfigure"))) + testImplementation("org.springframework.data:spring-data-jdbc") testRuntimeOnly("ch.qos.logback:logback-classic") testRuntimeOnly("com.h2database:h2") diff --git a/spring-boot-project/spring-boot-data-commons/src/main/java/org/springframework/boot/data/metrics/MetricsRepositoryMethodInvocationListener.java b/spring-boot-project/spring-boot-data-commons/src/main/java/org/springframework/boot/data/metrics/MetricsRepositoryMethodInvocationListener.java index abe4b98b217..5b863b67af0 100644 --- a/spring-boot-project/spring-boot-data-commons/src/main/java/org/springframework/boot/data/metrics/MetricsRepositoryMethodInvocationListener.java +++ b/spring-boot-project/spring-boot-data-commons/src/main/java/org/springframework/boot/data/metrics/MetricsRepositoryMethodInvocationListener.java @@ -50,7 +50,7 @@ public class MetricsRepositoryMethodInvocationListener implements RepositoryMeth * @param tagsProvider provider for metrics tags * @param metricName name of the metric to record * @param autoTimer the auto-timers to apply or {@code null} to disable auto-timing - * @since 2.5.4 + * @since 4.0.0 */ public MetricsRepositoryMethodInvocationListener(Supplier registrySupplier, RepositoryTagsProvider tagsProvider, String metricName, AutoTimer autoTimer) { diff --git a/spring-boot-project/spring-boot-data-commons/src/main/java/org/springframework/boot/data/web/autoconfigure/SpringDataWebAutoConfiguration.java b/spring-boot-project/spring-boot-data-commons/src/main/java/org/springframework/boot/data/web/autoconfigure/SpringDataWebAutoConfiguration.java index 1d20bfd268e..d50876afa02 100644 --- a/spring-boot-project/spring-boot-data-commons/src/main/java/org/springframework/boot/data/web/autoconfigure/SpringDataWebAutoConfiguration.java +++ b/spring-boot-project/spring-boot-data-commons/src/main/java/org/springframework/boot/data/web/autoconfigure/SpringDataWebAutoConfiguration.java @@ -45,7 +45,7 @@ import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; * @author Yanming Zhou * @since 4.0.0 */ -@AutoConfiguration(afterName = "org.springframework.boot.data.rest.autoconfigure.RepositoryRestMvcAutoConfiguration") +@AutoConfiguration @EnableSpringDataWebSupport @ConditionalOnWebApplication(type = Type.SERVLET) @ConditionalOnClass({ PageableHandlerMethodArgumentResolver.class, WebMvcConfigurer.class }) diff --git a/spring-boot-project/spring-boot-data-commons/src/test/java/org/springframework/boot/data/metrics/autoconfigure/city/City.java b/spring-boot-project/spring-boot-data-commons/src/test/java/org/springframework/boot/data/domain/city/City.java similarity index 57% rename from spring-boot-project/spring-boot-data-commons/src/test/java/org/springframework/boot/data/metrics/autoconfigure/city/City.java rename to spring-boot-project/spring-boot-data-commons/src/test/java/org/springframework/boot/data/domain/city/City.java index 5c15cd752f0..9e248ee4c57 100644 --- a/spring-boot-project/spring-boot-data-commons/src/test/java/org/springframework/boot/data/metrics/autoconfigure/city/City.java +++ b/spring-boot-project/spring-boot-data-commons/src/test/java/org/springframework/boot/data/domain/city/City.java @@ -14,39 +14,19 @@ * limitations under the License. */ -package org.springframework.boot.data.metrics.autoconfigure.city; +package org.springframework.boot.data.domain.city; -import java.io.Serializable; +import org.springframework.data.annotation.Id; -import jakarta.persistence.Column; -import jakarta.persistence.Entity; -import jakarta.persistence.GeneratedValue; -import jakarta.persistence.Id; - -@Entity -public class City implements Serializable { - - private static final long serialVersionUID = 1L; +public class City { @Id - @GeneratedValue private Long id; - @Column(nullable = false) private String name; - @Column(nullable = false) - private String state; - - @Column(nullable = false) private String country; - @Column(nullable = false) - private String map; - - protected City() { - } - public City(String name, String country) { this.name = name; this.country = country; @@ -56,21 +36,13 @@ public class City implements Serializable { return this.name; } - public String getState() { - return this.state; - } - public String getCountry() { return this.country; } - public String getMap() { - return this.map; - } - @Override public String toString() { - return getName() + "," + getState() + "," + getCountry(); + return getName() + "," + getCountry(); } } diff --git a/spring-boot-project/spring-boot-data-commons/src/test/java/org/springframework/boot/data/metrics/autoconfigure/city/CityRepository.java b/spring-boot-project/spring-boot-data-commons/src/test/java/org/springframework/boot/data/domain/city/CityRepository.java similarity index 54% rename from spring-boot-project/spring-boot-data-commons/src/test/java/org/springframework/boot/data/metrics/autoconfigure/city/CityRepository.java rename to spring-boot-project/spring-boot-data-commons/src/test/java/org/springframework/boot/data/domain/city/CityRepository.java index 66eeafa8e8d..f4d6fcf8024 100644 --- a/spring-boot-project/spring-boot-data-commons/src/test/java/org/springframework/boot/data/metrics/autoconfigure/city/CityRepository.java +++ b/spring-boot-project/spring-boot-data-commons/src/test/java/org/springframework/boot/data/domain/city/CityRepository.java @@ -14,19 +14,10 @@ * limitations under the License. */ -package org.springframework.boot.data.metrics.autoconfigure.city; +package org.springframework.boot.data.domain.city; -import org.springframework.data.domain.Page; -import org.springframework.data.domain.Pageable; -import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.repository.CrudRepository; -public interface CityRepository extends JpaRepository { - - @Override - Page findAll(Pageable pageable); - - Page findByNameLikeAndCountryLikeAllIgnoringCase(String name, String country, Pageable pageable); - - City findByNameAndCountryAllIgnoringCase(String name, String country); +public interface CityRepository extends CrudRepository { } diff --git a/spring-boot-project/spring-boot-data-commons/src/test/java/org/springframework/boot/data/metrics/autoconfigure/RepositoryMetricsAutoConfigurationIntegrationTests.java b/spring-boot-project/spring-boot-data-commons/src/test/java/org/springframework/boot/data/metrics/autoconfigure/RepositoryMetricsAutoConfigurationIntegrationTests.java index 0eb09feee84..83a793a6b3e 100644 --- a/spring-boot-project/spring-boot-data-commons/src/test/java/org/springframework/boot/data/metrics/autoconfigure/RepositoryMetricsAutoConfigurationIntegrationTests.java +++ b/spring-boot-project/spring-boot-data-commons/src/test/java/org/springframework/boot/data/metrics/autoconfigure/RepositoryMetricsAutoConfigurationIntegrationTests.java @@ -22,16 +22,20 @@ import io.micrometer.core.instrument.binder.MeterBinder; import io.micrometer.core.instrument.simple.SimpleMeterRegistry; import org.junit.jupiter.api.Test; -import org.springframework.boot.autoconfigure.AutoConfigurationPackage; import org.springframework.boot.autoconfigure.AutoConfigurations; import org.springframework.boot.autoconfigure.context.PropertyPlaceholderAutoConfiguration; -import org.springframework.boot.data.jpa.autoconfigure.JpaRepositoriesAutoConfiguration; -import org.springframework.boot.data.metrics.autoconfigure.city.CityRepository; -import org.springframework.boot.jdbc.autoconfigure.EmbeddedDataSourceConfiguration; -import org.springframework.boot.jpa.autoconfigure.hibernate.HibernateJpaAutoConfiguration; +import org.springframework.boot.data.domain.city.City; +import org.springframework.boot.data.domain.city.CityRepository; +import org.springframework.boot.jdbc.autoconfigure.DataSourceAutoConfiguration; +import org.springframework.boot.jdbc.autoconfigure.DataSourceInitializationAutoConfiguration; +import org.springframework.boot.jdbc.autoconfigure.DataSourceTransactionManagerAutoConfiguration; +import org.springframework.boot.jdbc.autoconfigure.JdbcTemplateAutoConfiguration; import org.springframework.boot.test.context.runner.ApplicationContextRunner; +import org.springframework.boot.testsupport.classpath.resources.WithResource; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; +import org.springframework.data.jdbc.repository.config.AbstractJdbcConfiguration; +import org.springframework.data.jdbc.repository.config.EnableJdbcRepositories; import static org.assertj.core.api.Assertions.assertThat; @@ -40,14 +44,22 @@ import static org.assertj.core.api.Assertions.assertThat; * * @author Phillip Webb */ +@WithResource(name = "schema.sql", content = """ + CREATE TABLE CITY ( + id INTEGER GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY, + name VARCHAR(30), + country VARCHAR(30) + ); + """) class RepositoryMetricsAutoConfigurationIntegrationTests { private final ApplicationContextRunner contextRunner = new ApplicationContextRunner() .withBean(SimpleMeterRegistry.class) - .withConfiguration( - AutoConfigurations.of(HibernateJpaAutoConfiguration.class, JpaRepositoriesAutoConfiguration.class, - PropertyPlaceholderAutoConfiguration.class, RepositoryMetricsAutoConfiguration.class)) - .withUserConfiguration(EmbeddedDataSourceConfiguration.class, TestConfig.class); + .withConfiguration(AutoConfigurations.of(PropertyPlaceholderAutoConfiguration.class, + RepositoryMetricsAutoConfiguration.class, JdbcTemplateAutoConfiguration.class, + DataSourceAutoConfiguration.class, DataSourceTransactionManagerAutoConfiguration.class, + DataSourceInitializationAutoConfiguration.class)) + .withUserConfiguration(TestConfig.class); @Test void repositoryMethodCallRecordsMetrics() { @@ -68,8 +80,8 @@ class RepositoryMetricsAutoConfigurationIntegrationTests { } @Configuration(proxyBeanMethods = false) - @AutoConfigurationPackage - static class TestConfig { + @EnableJdbcRepositories(basePackageClasses = City.class) + static class TestConfig extends AbstractJdbcConfiguration { } diff --git a/spring-boot-project/spring-boot-data-commons/src/test/java/org/springframework/boot/data/web/autoconfigure/domain/city/City.java b/spring-boot-project/spring-boot-data-commons/src/test/java/org/springframework/boot/data/web/autoconfigure/domain/city/City.java deleted file mode 100644 index dfcc47b3590..00000000000 --- a/spring-boot-project/spring-boot-data-commons/src/test/java/org/springframework/boot/data/web/autoconfigure/domain/city/City.java +++ /dev/null @@ -1,76 +0,0 @@ -/* - * Copyright 2012-present 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. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.springframework.boot.data.web.autoconfigure.domain.city; - -import java.io.Serializable; - -import jakarta.persistence.Column; -import jakarta.persistence.Entity; -import jakarta.persistence.GeneratedValue; -import jakarta.persistence.Id; - -@Entity -public class City implements Serializable { - - private static final long serialVersionUID = 1L; - - @Id - @GeneratedValue - private Long id; - - @Column(nullable = false) - private String name; - - @Column(nullable = false) - private String state; - - @Column(nullable = false) - private String country; - - @Column(nullable = false) - private String map; - - protected City() { - } - - public City(String name, String country) { - this.name = name; - this.country = country; - } - - public String getName() { - return this.name; - } - - public String getState() { - return this.state; - } - - public String getCountry() { - return this.country; - } - - public String getMap() { - return this.map; - } - - @Override - public String toString() { - return getName() + "," + getState() + "," + getCountry(); - } - -} diff --git a/spring-boot-project/spring-boot-data-commons/src/test/java/org/springframework/boot/data/web/autoconfigure/domain/city/CityRepository.java b/spring-boot-project/spring-boot-data-commons/src/test/java/org/springframework/boot/data/web/autoconfigure/domain/city/CityRepository.java deleted file mode 100644 index d906b4cea24..00000000000 --- a/spring-boot-project/spring-boot-data-commons/src/test/java/org/springframework/boot/data/web/autoconfigure/domain/city/CityRepository.java +++ /dev/null @@ -1,32 +0,0 @@ -/* - * Copyright 2012-present 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. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.springframework.boot.data.web.autoconfigure.domain.city; - -import org.springframework.data.domain.Page; -import org.springframework.data.domain.Pageable; -import org.springframework.data.jpa.repository.JpaRepository; - -public interface CityRepository extends JpaRepository { - - @Override - Page findAll(Pageable pageable); - - Page findByNameLikeAndCountryLikeAllIgnoringCase(String name, String country, Pageable pageable); - - City findByNameAndCountryAllIgnoringCase(String name, String country); - -} diff --git a/spring-boot-project/spring-boot-data-couchbase/build.gradle b/spring-boot-project/spring-boot-data-couchbase/build.gradle index 4d869c83957..85bb8cb42d9 100644 --- a/spring-boot-project/spring-boot-data-couchbase/build.gradle +++ b/spring-boot-project/spring-boot-data-couchbase/build.gradle @@ -27,6 +27,7 @@ description = "Spring Boot Data Couchbase" dependencies { api(project(":spring-boot-project:spring-boot-couchbase")) + api(project(":spring-boot-project:spring-boot-data-commons")) api("org.springframework.data:spring-data-couchbase") optional(project(":spring-boot-project:spring-boot-autoconfigure")) diff --git a/spring-boot-project/spring-boot-data-elasticsearch/build.gradle b/spring-boot-project/spring-boot-data-elasticsearch/build.gradle index cf05cfdaf9c..db848b08c7b 100644 --- a/spring-boot-project/spring-boot-data-elasticsearch/build.gradle +++ b/spring-boot-project/spring-boot-data-elasticsearch/build.gradle @@ -27,6 +27,7 @@ plugins { description = "Spring Boot Data Elasticsearch" dependencies { + api(project(":spring-boot-project:spring-boot-data-commons")) api(project(":spring-boot-project:spring-boot-elasticsearch")) api("org.springframework.data:spring-data-elasticsearch") diff --git a/spring-boot-project/spring-boot-data-jdbc/build.gradle b/spring-boot-project/spring-boot-data-jdbc/build.gradle index 8f77d1defb2..b6bdb7711e2 100644 --- a/spring-boot-project/spring-boot-data-jdbc/build.gradle +++ b/spring-boot-project/spring-boot-data-jdbc/build.gradle @@ -26,6 +26,7 @@ plugins { description = "Spring Boot Data JDBC" dependencies { + api(project(":spring-boot-project:spring-boot-data-commons")) api(project(":spring-boot-project:spring-boot-jdbc")) api("org.springframework.data:spring-data-jdbc") diff --git a/spring-boot-project/spring-boot-data-jpa/build.gradle b/spring-boot-project/spring-boot-data-jpa/build.gradle index 271e4d38229..ef3237d3950 100644 --- a/spring-boot-project/spring-boot-data-jpa/build.gradle +++ b/spring-boot-project/spring-boot-data-jpa/build.gradle @@ -26,6 +26,7 @@ plugins { description = "Spring Boot Data JPA" dependencies { + api(project(":spring-boot-project:spring-boot-data-commons")) api(project(":spring-boot-project:spring-boot-jpa")) api("org.springframework.data:spring-data-jpa") api("org.springframework:spring-aspects") @@ -46,4 +47,5 @@ dependencies { testRuntimeOnly("ch.qos.logback:logback-classic") testRuntimeOnly("com.h2database:h2") testRuntimeOnly("com.zaxxer:HikariCP") + testRuntimeOnly("jakarta.servlet:jakarta.servlet-api") } diff --git a/spring-boot-project/spring-boot-data-commons/src/test/java/org/springframework/boot/data/web/autoconfigure/SpringDataWebAutoConfigurationJpaTests.java b/spring-boot-project/spring-boot-data-jpa/src/test/java/org/springframework/boot/data/jpa/autoconfigure/JpaRepositoriesSpringDataWebAutoConfigurationTests.java similarity index 89% rename from spring-boot-project/spring-boot-data-commons/src/test/java/org/springframework/boot/data/web/autoconfigure/SpringDataWebAutoConfigurationJpaTests.java rename to spring-boot-project/spring-boot-data-jpa/src/test/java/org/springframework/boot/data/jpa/autoconfigure/JpaRepositoriesSpringDataWebAutoConfigurationTests.java index fb46094c5b2..16a80af22a3 100644 --- a/spring-boot-project/spring-boot-data-commons/src/test/java/org/springframework/boot/data/web/autoconfigure/SpringDataWebAutoConfigurationJpaTests.java +++ b/spring-boot-project/spring-boot-data-jpa/src/test/java/org/springframework/boot/data/jpa/autoconfigure/JpaRepositoriesSpringDataWebAutoConfigurationTests.java @@ -14,15 +14,15 @@ * limitations under the License. */ -package org.springframework.boot.data.web.autoconfigure; +package org.springframework.boot.data.jpa.autoconfigure; import org.junit.jupiter.api.Test; import org.springframework.boot.autoconfigure.AutoConfigurations; import org.springframework.boot.autoconfigure.TestAutoConfigurationPackage; -import org.springframework.boot.data.jpa.autoconfigure.JpaRepositoriesAutoConfiguration; -import org.springframework.boot.data.web.autoconfigure.domain.city.City; -import org.springframework.boot.data.web.autoconfigure.domain.city.CityRepository; +import org.springframework.boot.data.jpa.autoconfigure.domain.city.City; +import org.springframework.boot.data.jpa.autoconfigure.domain.city.CityRepository; +import org.springframework.boot.data.web.autoconfigure.SpringDataWebAutoConfiguration; import org.springframework.boot.jdbc.autoconfigure.DataSourceAutoConfiguration; import org.springframework.boot.jpa.autoconfigure.hibernate.HibernateJpaAutoConfiguration; import org.springframework.boot.test.context.runner.WebApplicationContextRunner; @@ -42,7 +42,7 @@ import static org.assertj.core.api.Assertions.assertThat; * @author Dave Syer * @author Stephane Nicoll */ -class SpringDataWebAutoConfigurationJpaTests { +class JpaRepositoriesSpringDataWebAutoConfigurationTests { private final WebApplicationContextRunner contextRunner = new WebApplicationContextRunner() .withConfiguration(AutoConfigurations.of(DataSourceAutoConfiguration.class, HibernateJpaAutoConfiguration.class, diff --git a/spring-boot-project/spring-boot-data-ldap/build.gradle b/spring-boot-project/spring-boot-data-ldap/build.gradle index a07ef9891b5..22013578ddb 100644 --- a/spring-boot-project/spring-boot-data-ldap/build.gradle +++ b/spring-boot-project/spring-boot-data-ldap/build.gradle @@ -26,6 +26,7 @@ plugins { description = "Spring Boot Data LDAP" dependencies { + api(project(":spring-boot-project:spring-boot-data-commons")) api(project(":spring-boot-project:spring-boot-ldap")) api("org.springframework.data:spring-data-ldap") diff --git a/spring-boot-project/spring-boot-data-mongodb/build.gradle b/spring-boot-project/spring-boot-data-mongodb/build.gradle index 823f00b46e7..b83a9e711f8 100644 --- a/spring-boot-project/spring-boot-data-mongodb/build.gradle +++ b/spring-boot-project/spring-boot-data-mongodb/build.gradle @@ -27,6 +27,7 @@ description = "Spring Boot Data MongoDB" dependencies { api(project(":spring-boot-project:spring-boot")) + api(project(":spring-boot-project:spring-boot-data-commons")) api(project(":spring-boot-project:spring-boot-mongodb")) api("org.springframework.data:spring-data-mongodb") diff --git a/spring-boot-project/spring-boot-data-neo4j/build.gradle b/spring-boot-project/spring-boot-data-neo4j/build.gradle index 4e2c12a4e8c..3f6f1bacf56 100644 --- a/spring-boot-project/spring-boot-data-neo4j/build.gradle +++ b/spring-boot-project/spring-boot-data-neo4j/build.gradle @@ -27,6 +27,7 @@ plugins { description = "Spring Boot Data Neo4j" dependencies { + api(project(":spring-boot-project:spring-boot-data-commons")) api(project(":spring-boot-project:spring-boot-neo4j")) api(project(":spring-boot-project:spring-boot-tx")) api("org.springframework.data:spring-data-neo4j") diff --git a/spring-boot-project/spring-boot-data-r2dbc/build.gradle b/spring-boot-project/spring-boot-data-r2dbc/build.gradle index b4ad91b5957..05ed6706463 100644 --- a/spring-boot-project/spring-boot-data-r2dbc/build.gradle +++ b/spring-boot-project/spring-boot-data-r2dbc/build.gradle @@ -27,6 +27,7 @@ plugins { description = "Spring Boot Data R2DBC" dependencies { + api(project(":spring-boot-project:spring-boot-data-commons")) api(project(":spring-boot-project:spring-boot-r2dbc")) api("io.r2dbc:r2dbc-spi") api("io.r2dbc:r2dbc-pool") diff --git a/spring-boot-project/spring-boot-data-redis/build.gradle b/spring-boot-project/spring-boot-data-redis/build.gradle index 42bd67b98cc..0fbc930ec28 100644 --- a/spring-boot-project/spring-boot-data-redis/build.gradle +++ b/spring-boot-project/spring-boot-data-redis/build.gradle @@ -28,6 +28,7 @@ description = "Spring Boot Data Redis" dependencies { api(project(":spring-boot-project:spring-boot")) + api(project(":spring-boot-project:spring-boot-data-commons")) api("io.lettuce:lettuce-core") api("org.springframework.data:spring-data-redis") diff --git a/spring-boot-project/spring-boot-data-rest/build.gradle b/spring-boot-project/spring-boot-data-rest/build.gradle index 41e193c2798..49d98786f38 100644 --- a/spring-boot-project/spring-boot-data-rest/build.gradle +++ b/spring-boot-project/spring-boot-data-rest/build.gradle @@ -26,8 +26,9 @@ plugins { description = "Spring Boot Data REST" dependencies { - api(project(":spring-boot-project:spring-boot-webmvc")) + api(project(":spring-boot-project:spring-boot-data-commons")) api(project(":spring-boot-project:spring-boot-jackson")) + api(project(":spring-boot-project:spring-boot-webmvc")) api("org.springframework.data:spring-data-rest-webmvc") optional(project(":spring-boot-project:spring-boot-autoconfigure")) diff --git a/spring-boot-project/spring-boot-data-rest/src/main/java/org/springframework/boot/data/rest/autoconfigure/RepositoryRestMvcAutoConfiguration.java b/spring-boot-project/spring-boot-data-rest/src/main/java/org/springframework/boot/data/rest/autoconfigure/RepositoryRestMvcAutoConfiguration.java index 47148f681b4..b780e6a35bf 100644 --- a/spring-boot-project/spring-boot-data-rest/src/main/java/org/springframework/boot/data/rest/autoconfigure/RepositoryRestMvcAutoConfiguration.java +++ b/spring-boot-project/spring-boot-data-rest/src/main/java/org/springframework/boot/data/rest/autoconfigure/RepositoryRestMvcAutoConfiguration.java @@ -24,6 +24,7 @@ import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean import org.springframework.boot.autoconfigure.condition.ConditionalOnWebApplication; import org.springframework.boot.autoconfigure.condition.ConditionalOnWebApplication.Type; import org.springframework.boot.context.properties.EnableConfigurationProperties; +import org.springframework.boot.data.web.autoconfigure.SpringDataWebAutoConfiguration; import org.springframework.boot.jackson.autoconfigure.JacksonAutoConfiguration; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Import; @@ -46,7 +47,7 @@ import org.springframework.http.converter.json.Jackson2ObjectMapperBuilder; * @author Andy Wilkinson * @since 4.0.0 */ -@AutoConfiguration(after = JacksonAutoConfiguration.class) +@AutoConfiguration(before = SpringDataWebAutoConfiguration.class, after = JacksonAutoConfiguration.class) @ConditionalOnWebApplication(type = Type.SERVLET) @ConditionalOnMissingBean(RepositoryRestMvcConfiguration.class) @ConditionalOnClass(RepositoryRestMvcConfiguration.class)