Commit Graph
309 Commits
Author SHA1 Message Date
Phillip Webb 6f409f7dd6 Polish code for upcoming Spring Security nullability changes
Update code and tests in preparation of upcoming Spring Security
`Nullable` annotation updates.
2026-04-07 22:27:19 -07:00
Eric Haag e0aa86fdb3 Improve GenerateProtoTask relocatability by clearing javaExecutablePath
Clears the `javaExecutablePath` on the Protobuf extension. This prevents
absolute Java installation paths from being tracked as task inputs,
avoiding cross-machine build cache misses and ensuring the task is fully
relocatable. This is safe because `protoc` and `grpc` are configured
to use native binaries rather than executable JARs.

See: https://github.com/google/protobuf-gradle-plugin/issues/785

Signed-off-by: Eric Haag <ehaag@gradle.com>

See gh-49842
2026-04-07 10:17:11 +01:00
Moritz Halbritter 09ece896a5 Merge branch '4.0.x'
Closes gh-49870
2026-04-02 11:16:36 +02:00
Moritz Halbritter d437c11761 Merge branch '3.5.x' into 4.0.x
Closes gh-49869
2026-04-02 11:12:20 +02:00
Moritz Halbritter dc375134f9 Merge branch '4.0.x'
Closes gh-49867
2026-04-02 10:47:07 +02:00
Moritz Halbritter 4f47202910 Merge branch '3.5.x' into 4.0.x
Closes gh-49866
2026-04-02 10:46:26 +02:00
Moritz Halbritter c56cbd46b2 Map OpenTelemetry environment variables to properties
Closes gh-48799
2026-03-30 15:28:42 +02:00
Stéphane Nicoll 5296a5bbfd Revert "Rename spring-boot-amqp to spring-boot-rabbitmq"
This reverts commit 72b8a6ca05,
b820d9feac, and
edadf816ab.

See gh-49620
2026-03-20 11:03:28 +01:00
Phillip Webb 328e91b492 Use testcontains mechanism to find access local gRPC address
See gh-49540
2026-03-19 16:47:06 -07:00
Chris BonoandPhillip Webb 1cb8d02ed7 Add Spring gRPC server and client security support
Add auto-configuration to integrate gRPC server applications
with Spring Security. This commit provides both standard
Spring Security support as well as OAuth support.

Closes gh-49047

Co-authored-by: Phillip Webb <phil.webb@broadcom.com>
2026-03-19 15:12:31 -07:00
Chris BonoandPhillip Webb be3a1b7117 Add Spring gRPC test support
Add a testing module that can be used for testing Spring gRPC
server or client applications.

Closes gh-49046

Co-authored-by: Phillip Webb <phil.webb@broadcom.com>
2026-03-19 15:12:30 -07:00
Chris BonoandPhillip Webb c35b21adb4 Add Spring gRPC client support
Add support for Spring gRPC client applications.

Closes gh-49045

Co-authored-by: Phillip Webb <phil.webb@broadcom.com>
2026-03-19 15:12:30 -07:00
Chris BonoandPhillip Webb e61bb6df5b Add Spring gRPC server support
Add support for Spring gRPC server applications.

Closes gh-49044

Co-authored-by: Phillip Webb <phil.webb@broadcom.com>
2026-03-19 15:12:30 -07:00
Stéphane NicollandEddú Meléndez edadf816ab Rename package for RabbitMQ support
This commit renames the RabbitMQ root packages from amqp to rabbitmq.

See gh-49620

Co-authored-by: Eddú Meléndez <eddu.melendez@gmail.com>
2026-03-19 08:04:16 +01:00
Stéphane NicollandEddú Meléndez b820d9feac Harmonize support to refer to RabbitMQ
This commit adapts description to refer to RabbitMQ rather than AMQP.

See gh-49620

Co-authored-by: Eddú Meléndez <eddu.melendez@gmail.com>
2026-03-19 08:04:16 +01:00
Stéphane NicollandEddú Meléndez 72b8a6ca05 Migrate Spring RabbitMQ support to spring-boot-rabbitmq
See gh-49620

Co-authored-by: Eddú Meléndez <eddu.melendez@gmail.com>
2026-03-19 08:04:14 +01:00
Andy Wilkinson 684e279d6f Merge branch '4.0.x'
Closes gh-49618
2026-03-16 18:01:32 +00:00
Andy Wilkinson 797253a447 Merge branch '3.5.x' into 4.0.x
Closes gh-49617
2026-03-16 18:00:39 +00:00
Stéphane Nicoll b12d40e8e5 Add support for Spring Batch MongoDB
This commit adds support for running Spring Batch jobs with a MongoDB
store. It aligns as much as possible to the JDBC counterpart, with
spring-boot-starter-batch-data-mongodb and spring-boot-starter-batch-data-mongodb-test.

As we do not have a way to initialize a MongoDB store at the moment,
this commit adds a conservative approach of executing commands defined
by the standard Spring Batch schema script.

Closes gh-43236
2026-03-16 12:11:19 +01:00
Brian Clozel 4b11e04e78 Deprecate RestTemplateBuilder#rootUri with replacement
This commit deprecates both `RootUriTemplateHandler` and
`RootUriBuilderFactory` types, along their usage in places like
`RestTemplateBuilder`.

`RestTemplateBuilder#rootUri` is now deprecated in favor of
`RestTemplateBuilder#baseUri`, which leverages Framework's
`DefaultUriBuilderFactory`.

Closes gh-48350
2026-02-24 16:18:09 +01:00
Phillip Webb 280af06373 Polish 2026-02-18 15:10:07 -08:00
Stéphane Nicoll f4156197b5 Fix checks 2026-02-18 08:17:51 +01:00
Phillip Webb 1d054e8a12 Ensure HttpMessageConverters are configured before RestClients
Update `RestClientAutoConfiguration` to ensure that it applies after
`HttpMessageConvertersAutoConfiguration`.

Prior to this commit, the `HttpMessageConvertersRestClientCustomizer`
bean might not get created due to the `@ConditionalOnBean` guard not
finding any `ClientHttpMessageConvertersCustomizer` beans.

Since the issue is surprising hard to replicate in a unit test, a new
smoke test has been added to ensure the problem doesn't return.

Fixes gh-49223
2026-02-17 22:26:02 -08:00
Andy Wilkinson 3100599005 Upgrade to Hibernate 7.2.1.Final
Closes gh-48857
2026-01-15 15:36:17 +00:00
Andy Wilkinson 0ffffee4bf Upgrade to Nullability Plugin 0.0.9
Closes gh-48638
2026-01-08 11:59:51 +00:00
Stéphane Nicoll 1f4a8dff98 Restore RANDOM_PORT handing in tests with a separate management port
This commit fixes a regression where RANDOM_PORT was no longer honored
if a defined management port is set. Due to the modularization efforts,
the code has moved from an EnvironmentPostProcessor to an
ApplicationListener. Unfortunately, the listener is registered too
late to handle the event it is listening to. While the event type could
have been changed, the listener was added on the ApplicationContext
which are not honored before the ApplicationContext is in a state to be
used.

The contract of ContextCustomizerFactory is already giving us everything
we need. While the environment is post-processed later than we would
like, it is still post-processed before the refresh state so that the
additional property is honored.

This commit also adds an integration test to cover this scenario.

Closes gh-48653
2025-12-31 17:10:39 +01:00
Phillip Webb da516741b2 Consider modules when deducing WebApplicationType
Introduce a strategy to `WebApplicationType` to allow modules to
implement deduction logic.

Prior to this commit, modules played no part in deducing the
`WebApplicationType`. This meant that a user with `spring-webflux`
for client purposes would deduce `REACTIVE` despite no
`spring-boot-webflux` module being present.

The following deduction logic order is now implemented:

1) If the `spring-boot-webmvc` module is being used and Spring MVC
   classes are found then `SERVLET` is used.

2) If the `spring-boot-webflux` module is being used and Spring WebFlux
   classes are found then `REACTIVE` is used.

3) If `spring-web` is found and servlet classes are available then
   `SERVLET` is used.

4) If none of the above are satisfied, `NONE` is used.

This commit also updates `SpringBootTestContextBootstrapper` to use
the same deduction logic.

Fixes gh-48517
2025-12-15 20:30:16 -08:00
Stéphane Nicoll 61e427c101 Merge branch '3.5.x'
Closes gh-48516
2025-12-12 16:24:45 +01:00
Stéphane Nicoll b05b01b0a7 Polish 2025-12-08 15:17:54 +01:00
Stéphane Nicoll a98b36efbb Start building against Spring Framework 7.0.2 snapshots
See gh-48439
2025-12-08 14:54:53 +01:00
Tran Ngoc Nhan 58d42475f3 Fix Javadoc reference for SampleJackson2OnlyApplication
See gh-48396

Signed-off-by: Tran Ngoc Nhan <ngocnhan.tran1996@gmail.com>
2025-12-05 10:13:04 -08:00
Andy Wilkinson cf1ecca81c Add missing spring-boot-restclient for Docker-based test
See gh-48253
2025-11-25 15:30:48 +00:00
Andy Wilkinson 3e82ede609 Require spring-boot-restclient dependency to use TestRestTemplate
Previously, spring-boot-restclient was a required dependency of
spring-boot-resttestclient. This had the unwanted side-effect of
increasing the risk of the test classpath enabling auto-configuration
for RestClient.Builder when it was main code that needed such a bean.
This could lead to integration tests passing but the application
itself failing to start when its run through its main method.

This commit makes spring-boot-restclient an optional dependency of
spring-boot-resttestclient. As a result, a dependency on
spring-boot-resttestclient is no longer sufficient to auto-configure
a RestClient.Builder bean, although it is still sufficient to
auto-configure a RestTestClient bean.

Those that wish to use TestRestTemplate rather than migrating to
RestTestClient will now have to add a dependency on
spring-boot-restclient. This makes it presence more obvious. It now
has to be declared directly rather than being somewhat hidden due to
being pulled in transitively. The hope is that this will reduce the
chances of the dependency being accidentially on the test classpath
when main code requires it to be on the runtime classpath.

Fixes gh-48253
2025-11-25 14:38:33 +00:00
Andy Wilkinson 3becdc7d47 Move server.error properties to spring.web.error
Closes gh-48201
2025-11-20 11:55:23 +00:00
Andy Wilkinson 81ec7aeb70 Fix clashing bean name with JsonTest and Jacksons 2 and 3
Fixes gh-48198
2025-11-20 09:14:46 +00:00
Phillip Webb 2685f4bf29 Change tomcat and jetty runtime modules to starters
Change `spring-boot-tomcat-runtime` and `spring-boot-jetty-runtime`
into starter POMs and reduce the number of dependencies needed for
`spring-boot-tomcat` and `spring-boot-jetty`.

The runtime starters provide only the jars required to run the
embedded server along with the module jar itself (excluding transitive
dependencies) and `spring-boot-webserver` (excluding transitive
dependencies).

The build setup required for an executable jar is slightly different
between Maven and Gradle. For Maven, the regular module is put in the
`provided` scope. For Gradle, the regular module remains in main
configuration and the runtime jar is put in the `providedRuntime`
configuration. The reference documentation has been updated to
show how to configure things if starters are being used.

Manual testing has been performed to ensure that wars build with Maven
and Gradle work with both Tomcat and Jetty in both deployed and
`java -jar` modes.

Closes gh-48175
2025-11-19 21:59:03 -08:00
Moritz Halbritter 4af532b8ee Add starters for Micrometer Metrics
This commit adds spring-boot-starter-micrometer-metrics and
spring-boot-starter-micrometer-metrics-test.

It also uses the new starters in smoke tests and in other starters,
which depended on spring-boot-micrometer-metrics.

Closes gh-48161
2025-11-18 09:28:53 +01:00
Phillip Webb 2e54aa6760 Merge branch '3.5.x'
Closes gh-48160
2025-11-17 21:00:09 -08:00
Andy Wilkinson bb0437c0e1 Correct names of isolated Json/ObjectMapper properties
Closes gh-48116
2025-11-13 12:00:19 +00:00
Phillip WebbandAndy Wilkinson 619454548b Restore support for Jersey
Restore support for Jersey now that it supports JAX-RS 4.

Closes gh-47967

Co-authored-by: Andy Wilkinson <andy.wilkinson@broadcom.com>
2025-11-05 10:51:08 -08:00
Moritz Halbritter e9172d9f51 Split spring-boot-micrometer-tracing into Brave and OpenTelemetry specific module
Closes gh-47953
2025-11-05 12:14:13 +01:00
Stéphane Nicoll 724f706f34 Move auto-configuration for WebTestClient in autoconfigure
Closes gh-47892
2025-10-31 12:05:25 +01:00
Moritz Halbritter e071006f8e Remove spring-boot-micrometer-tracing from Actuator starter
Closes gh-47785
2025-10-29 15:31:14 +01:00
Stéphane Nicoll f3958ae9e7 Add Spring Kafka test utilities to Kafka test starter
Closes gh-47793
2025-10-29 08:28:58 +01:00
Stéphane Nicoll 20fdeae1a9 Add WebTestClient infrastructure to GraphQL test starter
Closes gh-47849
2025-10-28 15:07:34 +01:00
Stéphane Nicoll cd1424d04b Simplify dependencies arrangement in smoke tests
This commit harmonizes dependencies used in smoke tests, in particular
by using the starters consistently. This serves not only as a validation
but also a showcase of how to use them.

Closes gh-47836
2025-10-28 11:16:23 +01:00
Andy Wilkinson 198cba7177 Fix spring-boot-jackson2's test auto-configuration
This commit is a follow-on from 14c5ac0. It fixes a similar problem
with @AutoConfigureJsonTesters that is also apparent when using
@JsonTest.

Fixes gh-47811

The org.springframework.boot.test-auto-configuration plugin has been
added so that test auto-configuration imports files are checked at
build time, hopefully catching this sort of problem earlier in the
future.

Closes gh-47812
2025-10-27 10:04:25 +00:00
Andy Wilkinson f72da4c77a Fix Actuator with Jackson 2 but no spring-web
Previously, if Actuator was being used in a non-web app such that
spring-web was not on the classpath, the app would fail to start
if Jackson 2 was present. This occured as the auto-configuration
for the EndpointJackson2ObjectMapper tried to use spring-web's
Jackson2ObjectMapperBuilder that was not present.

This commit updates the auto-configuration to back off when
Jackson2ObjectMapperBuilder is absent, aligning it with the
behavior of JacksonEndpointAutoConfiguration in 3.5.

Fixes gh-47788
2025-10-24 14:39:47 +01:00
Andy Wilkinson 4e94f26935 Support JMX endpoints when only Jackson 2 is present
Closes gh-47688
2025-10-22 14:40:59 +01:00
Andy Wilkinson 635e766aaf Make it easier to create executable and deployable war
Closes gh-46944
2025-10-22 10:13:46 +01:00