Commit Graph
39 Commits
Author SHA1 Message Date
Stéphane Nicoll 9821dade80 Merge branch '4.0.x' into 4.1.x
Closes gh-51121
2026-07-24 15:19:14 +02:00
Stéphane Nicoll b9ebff0084 Use RestClient in tests and infrastructure code
Closes gh-51120
2026-07-24 15:10:43 +02:00
Andy Wilkinson 7a45ee8767 Merge branch '4.0.x'
Closes gh-50851
2026-06-24 19:12:35 +01:00
Yanming Zhou 9d5c98b7e9 Replace isAssignableFrom() with isInstance() where feasible
Signed-off-by: Yanming Zhou <zhouyanming@gmail.com>

See gh-50750
2026-06-24 19:11:59 +01:00
Andy Wilkinson 6a74bb85a3 Merge branch '4.0.x'
Closes gh-50440
2026-05-14 15:03:44 +01:00
Andy Wilkinson add52b6ccd Merge branch '3.5.x' into 4.0.x
Closes gh-50439
2026-05-14 15:02:24 +01:00
Sebastien Tardif 0608a35e0d Remove compatibility code for EOL dependency versions
Remove NoSuchMethodError catch blocks and reflective fallbacks for
dependency versions that are no longer supported

See gh-50383

Signed-off-by: Sebastien Tardif <sebtardif@ncf.ca>
2026-05-12 10:08:57 -07:00
Andy Wilkinson c327a50325 Merge branch '4.0.x'
Closes gh-49312
2026-02-24 15:35:04 +00:00
Andy Wilkinson e808d7a7de Align server.tomcat.max-part-count default with Tomcat's default
Fixes gh-49311
2026-02-24 15:32:50 +00:00
Andy Wilkinson c9facf1b97 Upgrade to Tomcat 11.0.18
Tomcat 9.0.115, 10.1.52, and 11.0.18 include a breaking change [1] to
how ciphers are configured when using HTTPS. Previously, a single
setting was used but this has now been split in two; the existing
ciphers setting for TLSv1.2 ciphers and a new ciperSuites setting for
TLSv1.3. As part of this split, the behavior of the ciphers setting
has been changed such that any TLSv1.3 ciphers are ignored and a
warning is logged.

This change in Tomcat is problematic without also making some changes
in Boot. If we had done nothing, a user that had configured only
TLSv1.3 cipers would have them all ignored, leaving their SSL
connection unexpectedly using all of the default ciphers which may be
less secure.

This commit adapts to the breaking change in Tomcat by taking the
user's list of ciphers and splitting into into TLSv1.2 and TLSv1.3
ciphers before passing them into Tomcat's two settings (ciphers and
cipherSuites respectively). This is done defensively for backwards
compatibility. If the methods to identify and configure the TLSv1.3
ciphers are not present, we assume that we're running with an earlier
version of Tomcat and fall back to passing them all into the ciphers
setting as we did previously.

Closes gh-49143

[1] https://github.com/apache/tomcat/commit/9abf6bddb2e84ecf1668780bb3150b799f832ccf
2026-02-05 17:46:51 +00:00
Andy Wilkinson dfd4b85289 Upgrade to Tomcat 11.0.18
Tomcat 9.0.115, 10.1.52, and 11.0.18 include a breaking change [1] to
how ciphers are configured when using HTTPS. Previously, a single
setting was used but this has now been split in two; the existing
ciphers setting for TLSv1.2 ciphers and a new ciperSuites setting for
TLSv1.3. As part of this split, the behavior of the ciphers setting
has been changed such that any TLSv1.3 ciphers are ignored and a
warning is logged.

This change in Tomcat is problematic without also making some changes
in Boot. If we had done nothing, a user that had configured only
TLSv1.3 cipers would have them all ignored, leaving their SSL
connection unexpectedly using all of the default ciphers which may be
less secure.

This commit adapts to the breaking change in Tomcat by taking the
user's list of ciphers and splitting into into TLSv1.2 and TLSv1.3
ciphers before passing them into Tomcat's two settings (ciphers and
cipherSuites respectively). This is done defensively for backwards
compatibility. If the methods to identify and configure the TLSv1.3
ciphers are not present, we assume that we're running with an earlier
version of Tomcat and fall back to passing them all into the ciphers
setting as we did previously.

Closes gh-49108

[1] https://github.com/apache/tomcat/commit/9abf6bddb2e84ecf1668780bb3150b799f832ccf
2026-02-05 15:14:09 +00:00
jdsalasca b1e9fdc3ec Provide support for adding to the mime types that are compressed
Signed-off-by: jdsalasca <jdsalasc@unal.edu.co>

See gh-48930
2026-01-23 09:25:12 +00:00
Phillip Webb 0463b4d0bc Add @AutoConfigureWebServer test annotation
Introduce `@AutoConfigureWebServer` test annotation to support
`@SpringBootTest` with specific classes and a random port.

Closes gh-48815
2026-01-21 19:32:43 -08:00
Phillip Webb f73a809c8c Polish 2026-01-21 11:07:03 -08:00
Moritz Halbritter c9be84af6e Delete web server's temporary directories when the context is closed
Closes gh-9983
2026-01-20 10:16:54 +01:00
Andy Wilkinson c6cf8ba732 Upgrade to HttpClient5 5.6
Closes gh-48743
2026-01-09 09:54:21 +00:00
Andy Wilkinson 9bd1a460a1 Correct packaging of test code
Closes gh-48699
2026-01-08 11:43:43 +00:00
Stéphane Nicoll 9b7451ed9d Merge branch '3.5.x' into 4.0.x
Closes gh-48622
2025-12-26 09:01:59 +01:00
Andy Wilkinson 3becdc7d47 Move server.error properties to spring.web.error
Closes gh-48201
2025-11-20 11:55:23 +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
Stéphane Nicoll 3d23261f87 Merge branch '3.5.x'
Closes gh-48122
2025-11-13 14:55:19 +01:00
Stéphane Nicoll d1e5fe3248 Merge branch '3.5.x'
Closes gh-48106
2025-11-13 10:31:25 +01:00
Andy Wilkinson aa95282290 Polish @since tags
Closes gh-47779
2025-10-23 12:48:58 +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
Moritz Halbritter 1b59d45621 Add nullability annotations to tests in module/spring-boot-tomcat
See gh-47263
2025-10-15 16:58:20 +02:00
Moritz Halbritter 5906185fd8 Improve null-safety of module/spring-boot-web-server
See gh-47263
2025-10-15 16:58:20 +02:00
Stéphane Nicoll c3e0e1b93d Upgrade to Tomcat 11.0.13
Closes gh-47589
2025-10-14 17:09:16 +02:00
Phillip Webb 08a641c1a2 Polish whitespace in gradle files 2025-10-01 11:40:03 -07:00
Stéphane Nicoll 35bceeead2 Merge branch '3.5.x'
Closes gh-47254
2025-09-17 15:36:10 +02:00
Stéphane Nicoll aebecb3007 Polish contribution
See gh-47229
2025-09-17 15:04:35 +02:00
Kevin Zittritsch 2314d15430 Add configuration property for Tomcat's static resource cache max size
See gh-47229

Signed-off-by: Kevin Zittritsch <kevin.zittritsch@vtinfo.com>
2025-09-17 15:02:32 +02:00
Phillip Webb 8651e971ea Replace TomcatStarter to break servlet dependency
Replace `TomcatStarter` with a `DeferredStartupExceptions` interface
to break the direct dependency on `Servlet`.

Closes gh-44325
2025-09-15 20:03:05 -07:00
Phillip WebbandMoritz Halbritter 239f384ac0 Update PropertyMapper to better support nullability
Refactor `PropertyMapper` so that it no longer calls adapter or
predicate methods by default when the source value is `null`. This
effectively makes all default calls the same as using
`alwaysWhenNotNull` in the previous generation of the code.

For the limited times when you do need to deal with `null` values, the
new `always()` method can be used.

For example,

	map.from(source::method).to(destination::method);

Will not call `destination.method(...)` if `source.method()` returns
`null`.

Where as:

	map.from(source::method).always().to(destination::method);

Will call  `destination.method(null)` if `source.method()` returns
`null`.

This update provides clearer semantics for the API and allows for better
JSpecify nullability annotations. It has also simplified much of our
existing property mapper code.

Closes gh-47024

Co-authored-by: Moritz Halbritter <moritz.halbritter@broadcom.com>
2025-09-05 14:43:33 -07:00
Moritz Halbritter 007720d28d Improve null-safety of module/spring-boot-tomcat
See gh-46926
2025-08-26 14:22:56 +02:00
Phillip Webb 7140be8751 Rename metrics, observation, and tracing modules
Rename modules to include 'micrometer'.

Closes gh-46925
2025-08-20 16:05:11 -07:00
Moritz Halbritter 598ee985bf Add nullability annotations to module/spring-boot-tomcat
See gh-46587
2025-08-06 10:47:25 +02:00
Moritz Halbritter c0f1f641ce Make auto-configurations final and remove public members
Closes gh-32883
2025-07-29 09:48:49 +02:00
Andy Wilkinson 94215d3fdc Move Threading enum from spring-boot-autoconfigure to spring-boot
The enum itself is not specifically tied to auto-configuration so
spring-boot is a better place for it. The related condition,
`@ConditionalOnThreading`, remains in spring-boot-autoconfigure. This
aligns things with the similar `CloudPlatform` and
`@ConditionalOnCloudPlatform`.

Closes gh-46406
2025-07-11 13:49:41 +01:00
Phillip Webb decc32dde3 Restructure project directories to better fit Gradle
Closes gh-46358
2025-07-10 17:54:08 -07:00