Merge branch '3.4.x'
Build and Deploy Snapshot / Build and Deploy Snapshot (push) Has been cancelled Details
CI / ${{ matrix.os.name}} | Java ${{ matrix.java.version}} (map[early-access:true toolchain:true version:24], map[id:${{ vars.UBUNTU_MEDIUM || 'ubuntu-latest' }} name:Linux]) (push) Has been cancelled Details
CI / ${{ matrix.os.name}} | Java ${{ matrix.java.version}} (map[early-access:true toolchain:true version:24], map[id:windows-latest name:Windows]) (push) Has been cancelled Details
CI / ${{ matrix.os.name}} | Java ${{ matrix.java.version}} (map[toolchain:false version:17], map[id:${{ vars.UBUNTU_MEDIUM || 'ubuntu-latest' }} name:Linux]) (push) Has been cancelled Details
CI / ${{ matrix.os.name}} | Java ${{ matrix.java.version}} (map[toolchain:false version:17], map[id:windows-latest name:Windows]) (push) Has been cancelled Details
CI / ${{ matrix.os.name}} | Java ${{ matrix.java.version}} (map[toolchain:false version:21], map[id:${{ vars.UBUNTU_MEDIUM || 'ubuntu-latest' }} name:Linux]) (push) Has been cancelled Details
CI / ${{ matrix.os.name}} | Java ${{ matrix.java.version}} (map[toolchain:false version:21], map[id:windows-latest name:Windows]) (push) Has been cancelled Details
CI / ${{ matrix.os.name}} | Java ${{ matrix.java.version}} (map[toolchain:false version:22], map[id:${{ vars.UBUNTU_MEDIUM || 'ubuntu-latest' }} name:Linux]) (push) Has been cancelled Details
CI / ${{ matrix.os.name}} | Java ${{ matrix.java.version}} (map[toolchain:false version:22], map[id:windows-latest name:Windows]) (push) Has been cancelled Details
CI / ${{ matrix.os.name}} | Java ${{ matrix.java.version}} (map[toolchain:true version:23], map[id:${{ vars.UBUNTU_MEDIUM || 'ubuntu-latest' }} name:Linux]) (push) Has been cancelled Details
CI / ${{ matrix.os.name}} | Java ${{ matrix.java.version}} (map[toolchain:true version:23], map[id:windows-latest name:Windows]) (push) Has been cancelled Details
Run System Tests / Java ${{ matrix.java.version}} (map[toolchain:false version:17]) (push) Has been cancelled Details
Run System Tests / Java ${{ matrix.java.version}} (map[toolchain:true version:21]) (push) Has been cancelled Details
Build and Deploy Snapshot / Trigger Docs Build (push) Has been cancelled Details
Build and Deploy Snapshot / Verify (push) Has been cancelled Details

Closes gh-45595
This commit is contained in:
Stéphane Nicoll 2025-05-18 09:28:27 +02:00
commit 921b9fd6ac
18 changed files with 24 additions and 25 deletions

View File

@ -3,7 +3,7 @@
The `metrics` endpoint provides access to application metrics to diagnose the metrics the application has recorded.
This endpoint should not be "scraped" or used as a metrics backend in production.
Its purpose is to show the currently registered metrics so users can see what metrics are available, what their current values are, and if triggering certain operations cause any change in certain values.
Its purpose is to show the currently registered metrics so users can see what metrics are available, what their current values are, and if triggering certain operations causes any change in certain values.
If you want to diagnose your applications through the metrics they collect, you should use an xref:reference:actuator/metrics.adoc[external metrics backend].
In this case, the `metrics` endpoint can still be useful.

View File

@ -43,7 +43,7 @@ class NotReactiveWebApplicationOrVirtualThreadsExecutorEnabledCondition extends
@ConditionalOnThreading(Threading.VIRTUAL)
@ConditionalOnBean(name = TaskExecutionAutoConfiguration.APPLICATION_TASK_EXECUTOR_BEAN_NAME)
private static final class VirtualThreadsEnabled {
private static final class VirtualThreadsExecutorEnabled {
}

View File

@ -113,11 +113,10 @@ class JerseyAutoConfigurationTests {
.stream()
.filter(JakartaXmlBindAnnotationIntrospector.class::isInstance)).isEmpty();
});
}
@Test
void webApplicationIntializerDisablesJerseysWebApplicationInitializer() throws ServletException {
void webApplicationInitializerDisablesJerseyWebApplicationInitializer() throws ServletException {
ServletContext context = new MockServletContext();
new JerseyWebApplicationInitializer().onStartup(context);
assertThat(context.getInitParameter("contextConfigLocation")).isEqualTo("<NONE>");

View File

@ -53,7 +53,7 @@ record DockerCliInspectResponse(String id, DockerCliInspectResponse.Config confi
}
/**
* A container's resources (cgroups config, ulimits, etc).
* A container's resources (cgroups config, ulimits, etc.).
*
* @param networkMode the network mode to use for this container
*/

View File

@ -51,7 +51,7 @@ class DockerComposeFileTests {
DockerComposeFile c2 = DockerComposeFile.of(f1);
DockerComposeFile c3 = DockerComposeFile.find(f1.getParentFile());
DockerComposeFile c4 = DockerComposeFile.of(f2);
assertThat(c1.hashCode()).isEqualTo(c2.hashCode()).isEqualTo(c3.hashCode());
assertThat(c1).hasSameHashCodeAs(c2).hasSameHashCodeAs(c3);
assertThat(c1).isEqualTo(c1).isEqualTo(c2).isEqualTo(c3).isNotEqualTo(c4);
}

View File

@ -305,7 +305,7 @@ Imports may be specified as _fixed_ or _import relative_ locations.
A fixed location always resolves to the same underlying resource, regardless of where the configprop:spring.config.import[] property is declared.
An import relative location resolves relative to the file that declares the configprop:spring.config.import[] property.
A location starting with a forward slash (`/`) or a URL style prefix (`file:`, `classpath:`, etc) is considered fixed.
A location starting with a forward slash (`/`) or a URL style prefix (`file:`, `classpath:`, etc.) is considered fixed.
All other locations are considered import relative.
NOTE: `optional:` prefixes are not considered when determining if a location is fixed or import relative.
@ -313,7 +313,7 @@ NOTE: `optional:` prefixes are not considered when determining if a location is
As an example, say we have a `/demo` directory containing our `application.jar` file.
We might add a `/demo/application.properties` file with the following content:
[,properties]
[source,properties]
----
spring.config.import=optional:core/core.properties
----
@ -322,7 +322,7 @@ This is an import relative location and so will attempt to load the file `/demo/
If `/demo/core/core.properties` has the following content:
[,properties]
[source,properties]
----
spring.config.import=optional:extra/extra.properties
----

View File

@ -13,7 +13,7 @@ The auto-configured javadoc:org.springframework.core.task.AsyncTaskExecutor[] is
- Support for blocking execution in Spring WebFlux.
- Utilized for inbound and outbound message channels in Spring WebSocket.
- Bootstrap executor for JPA, based on the bootstrap mode of JPA repositories.
- Bootstrap Executor for {url-spring-framework-docs}/core/beans/java/composing-configuration-classes.html#beans-java-startup-background[background initialization] of beans in the `ApplicationContext`.
- Bootstrap executor for {url-spring-framework-docs}/core/beans/java/composing-configuration-classes.html#beans-java-startup-background[background initialization] of beans in the `ApplicationContext`.
While this approach works in most scenarios, Spring Boot allows you to override the auto-configured javadoc:org.springframework.core.task.AsyncTaskExecutor[].
By default, when a custom javadoc:java.util.concurrent.Executor[] bean is registered, the auto-configured javadoc:org.springframework.core.task.AsyncTaskExecutor[] backs off, and the custom javadoc:java.util.concurrent.Executor[] is used for regular task execution (via javadoc:org.springframework.scheduling.annotation.EnableAsync[format=annotation]).
@ -83,7 +83,7 @@ These integrations include:
- Spring WebFlux's blocking execution support.
- Utilized for inbound and outbound message channels in Spring WebSocket.
- Bootstrap executor for JPA, based on the bootstrap mode of JPA repositories.
- Bootstrap Executor for {url-spring-framework-docs}/core/beans/java/composing-configuration-classes.html#beans-java-startup-background[background initialization] of beans in the `ApplicationContext`, unless a bean named `bootstrapExecutor` is defined.
- Bootstrap executor for {url-spring-framework-docs}/core/beans/java/composing-configuration-classes.html#beans-java-startup-background[background initialization] of beans in the `ApplicationContext`, unless a bean named `bootstrapExecutor` is defined.
[TIP]
====

View File

@ -55,7 +55,7 @@ When these restrictions are in place, it becomes possible for Spring to perform
A Spring AOT processed application will typically generate:
* Java source code
* Bytecode (for dynamic proxies etc)
* Bytecode (for dynamic proxies, etc.)
* GraalVM JSON hint files in `+META-INF/native-image/{groupId}/{artifactId}/+`:
- Resource hints (`resource-config.json`)
- Reflection hints (`reflect-config.json`)

View File

@ -83,10 +83,10 @@ class ImportsContextCustomizerFactoryTests {
.createContextCustomizer(TestWithImportAndComponentScanOfSomePackage.class, null);
ContextCustomizer customizer3 = this.factory
.createContextCustomizer(TestWithImportAndComponentScanOfAnotherPackage.class, null);
assertThat(customizer1.hashCode()).isEqualTo(customizer2.hashCode());
assertThat(customizer1).isEqualTo(customizer2);
assertThat(customizer3.hashCode()).isNotEqualTo(customizer2.hashCode()).isNotEqualTo(customizer1.hashCode());
assertThat(customizer1).hasSameHashCodeAs(customizer2);
assertThat(customizer3).isNotEqualTo(customizer2).isNotEqualTo(customizer1);
assertThat(customizer3).doesNotHaveSameHashCodeAs(customizer2).doesNotHaveSameHashCodeAs(customizer1);
}
@Test

View File

@ -45,7 +45,7 @@ class FieldOriginTests {
Origin o2 = new FieldOrigin(ReflectionUtils.findField(Fields.class, "one"));
Origin o3 = new FieldOrigin(ReflectionUtils.findField(Fields.class, "two"));
assertThat(o1).isEqualTo(o1).isEqualTo(o2).isNotEqualTo(o3);
assertThat(o1.hashCode()).isEqualTo(o2.hashCode());
assertThat(o1).hasSameHashCodeAs(o2);
}
@Test

View File

@ -184,8 +184,8 @@ class NestedFileSystemTests {
NestedFileSystem f2 = new NestedFileSystem(this.provider, jp1);
NestedFileSystem f3 = new NestedFileSystem(this.provider, jp2);
NestedFileSystem f4 = new NestedFileSystem(this.provider, jp3);
assertThat(f1.hashCode()).isEqualTo(f2.hashCode());
assertThat(f1).isEqualTo(f1).isEqualTo(f2).isEqualTo(f3).isNotEqualTo(f4);
assertThat(f1).hasSameHashCodeAs(f2);
}
}

View File

@ -208,7 +208,7 @@ class NestedPathTests {
NestedPath p2 = new NestedPath(this.fileSystem, "a.jar");
NestedPath p3 = new NestedPath(this.fileSystem, "c.jar");
NestedPath p4 = new NestedPath(fs2, "c.jar");
assertThat(p1.hashCode()).isEqualTo(p2.hashCode());
assertThat(p1).hasSameHashCodeAs(p2);
assertThat(p1).isEqualTo(p1).isEqualTo(p2).isNotEqualTo(p3).isNotEqualTo(p4);
}

View File

@ -185,7 +185,7 @@ public interface ClientHttpRequestFactoryBuilder<T extends ClientHttpRequestFact
/**
* Detect the most suitable {@link ClientHttpRequestFactoryBuilder} based on the
* classpath. The methods favors builders in the following order:
* classpath. The method favors builders in the following order:
* <ol>
* <li>{@link #httpComponents()}</li>
* <li>{@link #jetty()}</li>
@ -201,7 +201,7 @@ public interface ClientHttpRequestFactoryBuilder<T extends ClientHttpRequestFact
/**
* Detect the most suitable {@link ClientHttpRequestFactoryBuilder} based on the
* classpath. The methods favors builders in the following order:
* classpath. The method favors builders in the following order:
* <ol>
* <li>{@link #httpComponents()}</li>
* <li>{@link #jetty()}</li>

View File

@ -157,7 +157,7 @@ public interface ClientHttpConnectorBuilder<T extends ClientHttpConnector> {
/**
* Detect the most suitable {@link ClientHttpConnectorBuilder} based on the classpath.
* The methods favors builders in the following order:
* The method favors builders in the following order:
* <ol>
* <li>{@link #reactor()}</li>
* <li>{@link #jetty()}</li>
@ -172,7 +172,7 @@ public interface ClientHttpConnectorBuilder<T extends ClientHttpConnector> {
/**
* Detect the most suitable {@link ClientHttpConnectorBuilder} based on the classpath.
* The methods favors builders in the following order:
* The method favors builders in the following order:
* <ol>
* <li>{@link #reactor()}</li>
* <li>{@link #jetty()}</li>

View File

@ -87,8 +87,8 @@ class StandardConfigDataResourceTests {
FileUrlResource fileResource = new FileUrlResource(classResource.getURL());
ConfigDataResource classDataResource = new StandardConfigDataResource(this.reference, classResource);
ConfigDataResource fileDataResource = new StandardConfigDataResource(this.reference, fileResource);
assertThat(classDataResource.hashCode()).isEqualTo(fileDataResource.hashCode());
assertThat(classDataResource).isEqualTo(fileDataResource);
assertThat(classDataResource).hasSameHashCodeAs(fileDataResource);
}
finally {
Thread.currentThread().setContextClassLoader(contextClassLoader);

View File

@ -86,8 +86,8 @@ class PemContentTests {
PemContent c1 = PemContent.of("aaa");
PemContent c2 = PemContent.of("aaa");
PemContent c3 = PemContent.of("bbb");
assertThat(c1.hashCode()).isEqualTo(c2.hashCode());
assertThat(c1).isEqualTo(c1).isEqualTo(c2).isNotEqualTo(c3);
assertThat(c1).hasSameHashCodeAs(c2);
}
@Test

View File

@ -62,7 +62,7 @@ class KotlinDefaultBindConstructorProviderTests {
}
@Test
fun `type with no param primary constructor and secondary params constructor should not use constructor binding`() {
fun `type with no param primary constructor and params secondary constructor should not use constructor binding`() {
val bindConstructor = this.constructorProvider.getBindConstructor(NoParamPrimaryWithParamsSecondaryProperties::class.java, false)
assertThat(bindConstructor).isNull()
}

View File

@ -604,7 +604,7 @@ ssl_storage_port: 7001
#
# Leaving it blank leaves it up to InetAddress.getLocalHost(). This
# will always do the Right Thing _if_ the node is properly configured
# (hostname, name resolution, etc), and the Right Thing is to use the
# (hostname, name resolution, etc.), and the Right Thing is to use the
# address associated with the hostname (it might not be).
#
# Setting listen_address to 0.0.0.0 is always wrong.