diff --git a/settings.gradle b/settings.gradle index 3fb350ed1f..aa84a52fac 100644 --- a/settings.gradle +++ b/settings.gradle @@ -63,6 +63,7 @@ include "spring-boot-project:spring-boot-data-neo4j" include "spring-boot-project:spring-boot-data-r2dbc" include "spring-boot-project:spring-boot-data-redis" include "spring-boot-project:spring-boot-data-rest" +include "spring-boot-project:spring-boot-data-web" include "spring-boot-project:spring-boot-dependencies" include "spring-boot-project:spring-boot-devtools" include "spring-boot-project:spring-boot-docker-compose" diff --git a/spring-boot-project/spring-boot-autoconfigure-all/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/spring-boot-project/spring-boot-autoconfigure-all/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports index a75be93caf..e2dcbf34fc 100644 --- a/spring-boot-project/spring-boot-autoconfigure-all/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports +++ b/spring-boot-project/spring-boot-autoconfigure-all/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports @@ -1,7 +1,6 @@ org.springframework.boot.autoconfigure.aop.AopAutoConfiguration org.springframework.boot.autoconfigure.cache.CacheAutoConfiguration org.springframework.boot.autoconfigure.dao.PersistenceExceptionTranslationAutoConfiguration -org.springframework.boot.autoconfigure.data.web.SpringDataWebAutoConfiguration org.springframework.boot.autoconfigure.graphql.GraphQlAutoConfiguration org.springframework.boot.autoconfigure.graphql.data.GraphQlReactiveQueryByExampleAutoConfiguration org.springframework.boot.autoconfigure.graphql.data.GraphQlReactiveQuerydslAutoConfiguration diff --git a/spring-boot-project/spring-boot-data-web/build.gradle b/spring-boot-project/spring-boot-data-web/build.gradle new file mode 100644 index 0000000000..0d9bbddd86 --- /dev/null +++ b/spring-boot-project/spring-boot-data-web/build.gradle @@ -0,0 +1,27 @@ +plugins { + id "java-library" + id "org.springframework.boot.auto-configuration" + id "org.springframework.boot.configuration-properties" + id "org.springframework.boot.deployed" + id "org.springframework.boot.optional-dependencies" +} + +description = "Spring Boot New Project" + +dependencies { + api(project(":spring-boot-project:spring-boot-webmvc")) + api("org.springframework.data:spring-data-commons") + + optional(project(":spring-boot-project:spring-boot-autoconfigure")) + optional(project(":spring-boot-project:spring-boot-data-rest")) + + testImplementation(project(":spring-boot-project:spring-boot-data-jpa")) + 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"))) + + 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-autoconfigure-all/src/main/java/org/springframework/boot/autoconfigure/data/web/SpringDataWebAutoConfiguration.java b/spring-boot-project/spring-boot-data-web/src/main/java/org/springframework/boot/autoconfigure/data/web/SpringDataWebAutoConfiguration.java similarity index 99% rename from spring-boot-project/spring-boot-autoconfigure-all/src/main/java/org/springframework/boot/autoconfigure/data/web/SpringDataWebAutoConfiguration.java rename to spring-boot-project/spring-boot-data-web/src/main/java/org/springframework/boot/autoconfigure/data/web/SpringDataWebAutoConfiguration.java index ad80ade76f..82d1589f98 100644 --- a/spring-boot-project/spring-boot-autoconfigure-all/src/main/java/org/springframework/boot/autoconfigure/data/web/SpringDataWebAutoConfiguration.java +++ b/spring-boot-project/spring-boot-data-web/src/main/java/org/springframework/boot/autoconfigure/data/web/SpringDataWebAutoConfiguration.java @@ -43,7 +43,7 @@ import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; * @author Andy Wilkinson * @author Vedran Pavic * @author Yanming Zhou - * @since 1.2.0 + * @since 4.0.0 */ @AutoConfiguration(afterName = "org.springframework.boot.data.rest.autoconfigure.RepositoryRestMvcAutoConfiguration") @EnableSpringDataWebSupport diff --git a/spring-boot-project/spring-boot-autoconfigure-all/src/main/java/org/springframework/boot/autoconfigure/data/web/SpringDataWebProperties.java b/spring-boot-project/spring-boot-data-web/src/main/java/org/springframework/boot/autoconfigure/data/web/SpringDataWebProperties.java similarity index 98% rename from spring-boot-project/spring-boot-autoconfigure-all/src/main/java/org/springframework/boot/autoconfigure/data/web/SpringDataWebProperties.java rename to spring-boot-project/spring-boot-data-web/src/main/java/org/springframework/boot/autoconfigure/data/web/SpringDataWebProperties.java index fd59dc6074..6f697fb00a 100644 --- a/spring-boot-project/spring-boot-autoconfigure-all/src/main/java/org/springframework/boot/autoconfigure/data/web/SpringDataWebProperties.java +++ b/spring-boot-project/spring-boot-data-web/src/main/java/org/springframework/boot/autoconfigure/data/web/SpringDataWebProperties.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2024 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. @@ -24,7 +24,7 @@ import org.springframework.data.web.config.EnableSpringDataWebSupport.PageSerial * * @author Vedran Pavic * @author Yanming Zhou - * @since 2.0.0 + * @since 4.0.0 */ @ConfigurationProperties("spring.data.web") public class SpringDataWebProperties { diff --git a/spring-boot-project/spring-boot-autoconfigure-all/src/main/java/org/springframework/boot/autoconfigure/data/web/package-info.java b/spring-boot-project/spring-boot-data-web/src/main/java/org/springframework/boot/autoconfigure/data/web/package-info.java similarity index 92% rename from spring-boot-project/spring-boot-autoconfigure-all/src/main/java/org/springframework/boot/autoconfigure/data/web/package-info.java rename to spring-boot-project/spring-boot-data-web/src/main/java/org/springframework/boot/autoconfigure/data/web/package-info.java index 3848860773..d465b5063c 100644 --- a/spring-boot-project/spring-boot-autoconfigure-all/src/main/java/org/springframework/boot/autoconfigure/data/web/package-info.java +++ b/spring-boot-project/spring-boot-data-web/src/main/java/org/springframework/boot/autoconfigure/data/web/package-info.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2019 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. diff --git a/spring-boot-project/spring-boot-data-web/src/main/resources/META-INF/additional-spring-configuration-metadata.json b/spring-boot-project/spring-boot-data-web/src/main/resources/META-INF/additional-spring-configuration-metadata.json new file mode 100644 index 0000000000..671fd2520c --- /dev/null +++ b/spring-boot-project/spring-boot-data-web/src/main/resources/META-INF/additional-spring-configuration-metadata.json @@ -0,0 +1,4 @@ +{ + "groups": [], + "properties": [] +} diff --git a/spring-boot-project/spring-boot-data-web/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/spring-boot-project/spring-boot-data-web/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports new file mode 100644 index 0000000000..f49f46ebec --- /dev/null +++ b/spring-boot-project/spring-boot-data-web/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports @@ -0,0 +1 @@ +org.springframework.boot.autoconfigure.data.web.SpringDataWebAutoConfiguration diff --git a/spring-boot-project/spring-boot-autoconfigure-all/src/test/java/org/springframework/boot/autoconfigure/data/web/SpringDataWebAutoConfigurationJpaTests.java b/spring-boot-project/spring-boot-data-web/src/test/java/org/springframework/boot/autoconfigure/data/web/SpringDataWebAutoConfigurationJpaTests.java similarity index 92% rename from spring-boot-project/spring-boot-autoconfigure-all/src/test/java/org/springframework/boot/autoconfigure/data/web/SpringDataWebAutoConfigurationJpaTests.java rename to spring-boot-project/spring-boot-data-web/src/test/java/org/springframework/boot/autoconfigure/data/web/SpringDataWebAutoConfigurationJpaTests.java index eb3d382322..6a90dcdeed 100644 --- a/spring-boot-project/spring-boot-autoconfigure-all/src/test/java/org/springframework/boot/autoconfigure/data/web/SpringDataWebAutoConfigurationJpaTests.java +++ b/spring-boot-project/spring-boot-data-web/src/test/java/org/springframework/boot/autoconfigure/data/web/SpringDataWebAutoConfigurationJpaTests.java @@ -20,8 +20,8 @@ import org.junit.jupiter.api.Test; import org.springframework.boot.autoconfigure.AutoConfigurations; import org.springframework.boot.autoconfigure.TestAutoConfigurationPackage; -import org.springframework.boot.autoconfigure.data.alt.jpa.City; -import org.springframework.boot.autoconfigure.data.alt.jpa.CityJpaRepository; +import org.springframework.boot.autoconfigure.data.web.domain.city.City; +import org.springframework.boot.autoconfigure.data.web.domain.city.CityRepository; import org.springframework.boot.data.jpa.autoconfigure.JpaRepositoriesAutoConfiguration; import org.springframework.boot.jdbc.autoconfigure.DataSourceAutoConfiguration; import org.springframework.boot.jpa.autoconfigure.hibernate.HibernateJpaAutoConfiguration; @@ -52,7 +52,7 @@ class SpringDataWebAutoConfigurationJpaTests { @Test void springDataWebIsConfiguredWithJpaRepositories() { this.contextRunner.withUserConfiguration(TestConfiguration.class).run((context) -> { - assertThat(context).hasSingleBean(CityJpaRepository.class); + assertThat(context).hasSingleBean(CityRepository.class); assertThat(context).hasSingleBean(PageableHandlerMethodArgumentResolver.class); assertThat(context).hasSingleBean(SortHandlerMethodArgumentResolver.class); assertThat(context.getBean(FormattingConversionService.class).canConvert(String.class, Distance.class)) diff --git a/spring-boot-project/spring-boot-autoconfigure-all/src/test/java/org/springframework/boot/autoconfigure/data/web/SpringDataWebAutoConfigurationTests.java b/spring-boot-project/spring-boot-data-web/src/test/java/org/springframework/boot/autoconfigure/data/web/SpringDataWebAutoConfigurationTests.java similarity index 99% rename from spring-boot-project/spring-boot-autoconfigure-all/src/test/java/org/springframework/boot/autoconfigure/data/web/SpringDataWebAutoConfigurationTests.java rename to spring-boot-project/spring-boot-data-web/src/test/java/org/springframework/boot/autoconfigure/data/web/SpringDataWebAutoConfigurationTests.java index d3a1e92406..7cf7053081 100644 --- a/spring-boot-project/spring-boot-autoconfigure-all/src/test/java/org/springframework/boot/autoconfigure/data/web/SpringDataWebAutoConfigurationTests.java +++ b/spring-boot-project/spring-boot-data-web/src/test/java/org/springframework/boot/autoconfigure/data/web/SpringDataWebAutoConfigurationTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2024 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. diff --git a/spring-boot-project/spring-boot-autoconfigure-all/src/test/java/org/springframework/boot/autoconfigure/data/alt/jpa/City.java b/spring-boot-project/spring-boot-data-web/src/test/java/org/springframework/boot/autoconfigure/data/web/domain/city/City.java similarity index 95% rename from spring-boot-project/spring-boot-autoconfigure-all/src/test/java/org/springframework/boot/autoconfigure/data/alt/jpa/City.java rename to spring-boot-project/spring-boot-data-web/src/test/java/org/springframework/boot/autoconfigure/data/web/domain/city/City.java index ea0ec055d3..80cceb044f 100644 --- a/spring-boot-project/spring-boot-autoconfigure-all/src/test/java/org/springframework/boot/autoconfigure/data/alt/jpa/City.java +++ b/spring-boot-project/spring-boot-data-web/src/test/java/org/springframework/boot/autoconfigure/data/web/domain/city/City.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.boot.autoconfigure.data.alt.jpa; +package org.springframework.boot.autoconfigure.data.web.domain.city; import java.io.Serializable; diff --git a/spring-boot-project/spring-boot-autoconfigure-all/src/test/java/org/springframework/boot/autoconfigure/data/alt/jpa/CityJpaRepository.java b/spring-boot-project/spring-boot-data-web/src/test/java/org/springframework/boot/autoconfigure/data/web/domain/city/CityRepository.java similarity index 54% rename from spring-boot-project/spring-boot-autoconfigure-all/src/test/java/org/springframework/boot/autoconfigure/data/alt/jpa/CityJpaRepository.java rename to spring-boot-project/spring-boot-data-web/src/test/java/org/springframework/boot/autoconfigure/data/web/domain/city/CityRepository.java index f8238ad5bc..45a8387046 100644 --- a/spring-boot-project/spring-boot-autoconfigure-all/src/test/java/org/springframework/boot/autoconfigure/data/alt/jpa/CityJpaRepository.java +++ b/spring-boot-project/spring-boot-data-web/src/test/java/org/springframework/boot/autoconfigure/data/web/domain/city/CityRepository.java @@ -14,10 +14,19 @@ * limitations under the License. */ -package org.springframework.boot.autoconfigure.data.alt.jpa; +package org.springframework.boot.autoconfigure.data.web.domain.city; -import org.springframework.data.repository.Repository; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; +import org.springframework.data.jpa.repository.JpaRepository; -public interface CityJpaRepository extends Repository { +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-dependencies/build.gradle b/spring-boot-project/spring-boot-dependencies/build.gradle index bdd412deed..92d0cedb03 100644 --- a/spring-boot-project/spring-boot-dependencies/build.gradle +++ b/spring-boot-project/spring-boot-dependencies/build.gradle @@ -1998,6 +1998,7 @@ bom { "spring-boot-data-r2dbc", "spring-boot-data-redis", "spring-boot-data-rest", + "spring-boot-data-web", "spring-boot-devtools", "spring-boot-docker-compose", "spring-boot-elasticsearch", diff --git a/spring-boot-project/spring-boot-docs/build.gradle b/spring-boot-project/spring-boot-docs/build.gradle index 9309c644f4..439abef45a 100644 --- a/spring-boot-project/spring-boot-docs/build.gradle +++ b/spring-boot-project/spring-boot-docs/build.gradle @@ -79,6 +79,7 @@ dependencies { autoConfiguration(project(path: ":spring-boot-project:spring-boot-data-r2dbc", configuration: "autoConfigurationMetadata")) autoConfiguration(project(path: ":spring-boot-project:spring-boot-data-redis", configuration: "autoConfigurationMetadata")) autoConfiguration(project(path: ":spring-boot-project:spring-boot-data-rest", configuration: "autoConfigurationMetadata")) + autoConfiguration(project(path: ":spring-boot-project:spring-boot-data-web", configuration: "autoConfigurationMetadata")) autoConfiguration(project(path: ":spring-boot-project:spring-boot-devtools", configuration: "autoConfigurationMetadata")) autoConfiguration(project(path: ":spring-boot-project:spring-boot-elasticsearch", configuration: "autoConfigurationMetadata")) autoConfiguration(project(path: ":spring-boot-project:spring-boot-flyway", configuration: "autoConfigurationMetadata")) @@ -140,6 +141,7 @@ dependencies { configurationProperties(project(path: ":spring-boot-project:spring-boot-data-r2dbc", configuration: "configurationPropertiesMetadata")) configurationProperties(project(path: ":spring-boot-project:spring-boot-data-redis", configuration: "configurationPropertiesMetadata")) configurationProperties(project(path: ":spring-boot-project:spring-boot-data-rest", configuration: "configurationPropertiesMetadata")) + configurationProperties(project(path: ":spring-boot-project:spring-boot-data-web", configuration: "configurationPropertiesMetadata")) configurationProperties(project(path: ":spring-boot-project:spring-boot-devtools", configuration: "configurationPropertiesMetadata")) configurationProperties(project(path: ":spring-boot-project:spring-boot-docker-compose", configuration: "configurationPropertiesMetadata")) configurationProperties(project(path: ":spring-boot-project:spring-boot-elasticsearch", configuration: "configurationPropertiesMetadata")) diff --git a/spring-boot-project/spring-boot-starters/spring-boot-starter-data-rest/build.gradle b/spring-boot-project/spring-boot-starters/spring-boot-starter-data-rest/build.gradle index 3561606761..81d55b65fb 100644 --- a/spring-boot-project/spring-boot-starters/spring-boot-starter-data-rest/build.gradle +++ b/spring-boot-project/spring-boot-starters/spring-boot-starter-data-rest/build.gradle @@ -7,5 +7,6 @@ description = "Starter for exposing Spring Data repositories over REST using Spr dependencies { api(project(":spring-boot-project:spring-boot-starters:spring-boot-starter-web")) api(project(":spring-boot-project:spring-boot-data-rest")) + api(project(":spring-boot-project:spring-boot-data-web")) api(project(":spring-boot-project:spring-boot-tx")) } diff --git a/spring-boot-project/spring-boot-test-autoconfigure/build.gradle b/spring-boot-project/spring-boot-test-autoconfigure/build.gradle index 39837afe12..8068f40559 100644 --- a/spring-boot-project/spring-boot-test-autoconfigure/build.gradle +++ b/spring-boot-project/spring-boot-test-autoconfigure/build.gradle @@ -46,6 +46,7 @@ dependencies { optional(project(":spring-boot-project:spring-boot-data-neo4j")) optional(project(":spring-boot-project:spring-boot-data-r2dbc")) optional(project(":spring-boot-project:spring-boot-data-redis")) + optional(project(":spring-boot-project:spring-boot-data-web")) optional(project(":spring-boot-project:spring-boot-flyway")) optional(project(":spring-boot-project:spring-boot-groovy-templates")) optional(project(":spring-boot-project:spring-boot-hateoas")) diff --git a/spring-boot-project/spring-boot-test-autoconfigure/src/main/resources/META-INF/spring/org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureWebMvc.imports b/spring-boot-project/spring-boot-test-autoconfigure/src/main/resources/META-INF/spring/org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureWebMvc.imports index 91c04462fb..41fac085e2 100644 --- a/spring-boot-project/spring-boot-test-autoconfigure/src/main/resources/META-INF/spring/org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureWebMvc.imports +++ b/spring-boot-project/spring-boot-test-autoconfigure/src/main/resources/META-INF/spring/org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureWebMvc.imports @@ -7,7 +7,7 @@ optional:org.springframework.boot.mustache.autoconfigure.MustacheAutoConfigurati optional:org.springframework.boot.thymeleaf.autoconfigure.ThymeleafAutoConfiguration optional:org.springframework.boot.validation.autoconfigure.ValidationAutoConfiguration org.springframework.boot.autoconfigure.context.MessageSourceAutoConfiguration -org.springframework.boot.autoconfigure.data.web.SpringDataWebAutoConfiguration +optional:org.springframework.boot.autoconfigure.data.web.SpringDataWebAutoConfiguration org.springframework.boot.autoconfigure.task.TaskExecutionAutoConfiguration org.springframework.boot.autoconfigure.web.servlet.HttpEncodingAutoConfiguration org.springframework.boot.webmvc.autoconfigure.WebMvcAutoConfiguration