mirror of
https://github.com/spring-projects/spring-boot.git
synced 2026-05-02 19:30:23 +01:00
Add support for GET requests for /actuator/startup
See gh-24717
This commit is contained in:
+3
-1
@@ -16,7 +16,9 @@ The resulting response is similar to the following:
|
|||||||
|
|
||||||
include::{snippets}/startup/http-response.adoc[]
|
include::{snippets}/startup/http-response.adoc[]
|
||||||
|
|
||||||
|
NOTE: The above call resets the application startup steps buffer - subsequent calls to the endpoint will
|
||||||
|
not include the returned steps. To retrieve a snapshot of the steps recorded so far without removing them
|
||||||
|
from the startup buffer, make a `GET` request to `/actuator/startup`.
|
||||||
|
|
||||||
[[startup-retrieving-response-structure]]
|
[[startup-retrieving-response-structure]]
|
||||||
=== Response Structure
|
=== Response Structure
|
||||||
|
|||||||
+8
@@ -18,6 +18,7 @@ package org.springframework.boot.actuate.startup;
|
|||||||
|
|
||||||
import org.springframework.boot.SpringBootVersion;
|
import org.springframework.boot.SpringBootVersion;
|
||||||
import org.springframework.boot.actuate.endpoint.annotation.Endpoint;
|
import org.springframework.boot.actuate.endpoint.annotation.Endpoint;
|
||||||
|
import org.springframework.boot.actuate.endpoint.annotation.ReadOperation;
|
||||||
import org.springframework.boot.actuate.endpoint.annotation.WriteOperation;
|
import org.springframework.boot.actuate.endpoint.annotation.WriteOperation;
|
||||||
import org.springframework.boot.context.metrics.buffering.BufferingApplicationStartup;
|
import org.springframework.boot.context.metrics.buffering.BufferingApplicationStartup;
|
||||||
import org.springframework.boot.context.metrics.buffering.StartupTimeline;
|
import org.springframework.boot.context.metrics.buffering.StartupTimeline;
|
||||||
@@ -28,6 +29,7 @@ import org.springframework.boot.context.metrics.buffering.StartupTimeline;
|
|||||||
* application startup}.
|
* application startup}.
|
||||||
*
|
*
|
||||||
* @author Brian Clozel
|
* @author Brian Clozel
|
||||||
|
* @author Chris Bono
|
||||||
* @since 2.4.0
|
* @since 2.4.0
|
||||||
*/
|
*/
|
||||||
@Endpoint(id = "startup")
|
@Endpoint(id = "startup")
|
||||||
@@ -50,6 +52,12 @@ public class StartupEndpoint {
|
|||||||
return new StartupResponse(startupTimeline);
|
return new StartupResponse(startupTimeline);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ReadOperation
|
||||||
|
public StartupResponse startupSnapshot() {
|
||||||
|
StartupTimeline startupTimeline = this.applicationStartup.getBufferedTimeline();
|
||||||
|
return new StartupResponse(startupTimeline);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* A description of an application startup, primarily intended for serialization to
|
* A description of an application startup, primarily intended for serialization to
|
||||||
* JSON.
|
* JSON.
|
||||||
|
|||||||
+14
@@ -30,6 +30,7 @@ import static org.assertj.core.api.Assertions.assertThat;
|
|||||||
* Tests for {@link StartupEndpoint}.
|
* Tests for {@link StartupEndpoint}.
|
||||||
*
|
*
|
||||||
* @author Brian Clozel
|
* @author Brian Clozel
|
||||||
|
* @author Chris Bono
|
||||||
*/
|
*/
|
||||||
class StartupEndpointTests {
|
class StartupEndpointTests {
|
||||||
|
|
||||||
@@ -60,6 +61,19 @@ class StartupEndpointTests {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void bufferIsNotDrained() {
|
||||||
|
BufferingApplicationStartup applicationStartup = new BufferingApplicationStartup(256);
|
||||||
|
ApplicationContextRunner contextRunner = new ApplicationContextRunner()
|
||||||
|
.withInitializer((context) -> context.setApplicationStartup(applicationStartup))
|
||||||
|
.withUserConfiguration(EndpointConfiguration.class);
|
||||||
|
contextRunner.run((context) -> {
|
||||||
|
StartupEndpoint.StartupResponse startup = context.getBean(StartupEndpoint.class).startupSnapshot();
|
||||||
|
assertThat(startup.getTimeline().getEvents()).isNotEmpty();
|
||||||
|
assertThat(applicationStartup.getBufferedTimeline().getEvents()).isNotEmpty();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
@Configuration(proxyBeanMethods = false)
|
@Configuration(proxyBeanMethods = false)
|
||||||
static class EndpointConfiguration {
|
static class EndpointConfiguration {
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user