In this tutorial, you will learn how to enable the Actuator’s httpTrace endpoint in Spring Boot 3. In fact, /httptrace has been renamed to /httpexchanges, so this tutorial will teach you how to enable the Actuator’s /httpexchanges API endpoint instead of /httptrace.
The httpexchanges endpoint provides information about HTTP request-response exchanges. To learn more, check out the documentation page.
Step 1. Add Actuator Dependency
The first step is to add actuator dependency to your project.
Maven Dependency
If your project is maven-based, then add the following dependency to pom.xml file.
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency>
Gradle Dependency
If your project is Gradle-based, add the following dependency to your build.gradle file.
ependencies { compile 'org.springframework.boot:spring-boot-starter-actuator' }
Step 2. Enable /actuator/httpexchanges Endpoint
By default, the /actuator/httpexchanges endpoint is disabled in Spring Boot 3. To enable it, you will need to add the following to your application.properties file:
management.endpoints.web.exposure.include=httpexchanges
To enable all API endpoints, use the following property value instead:
management.endpoints.web.exposure.include=*
Step 3. Create InMemoryHttpExchangeRepository Bean
For the HttpExchanges API endpoint to work in Spring Boot 3, create a Bean of HttpExchangeRepository type. To do that, add to your project the following Configuration class.
import org.springframework.boot.actuate.web.exchanges.HttpExchangeRepository; import org.springframework.boot.actuate.web.exchanges.InMemoryHttpExchangeRepository; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @Configuration public class ActuatorHttpExchangesConfiguration { @Bean public HttpExchangeRepository httpTraceRepository() { return new InMemoryHttpExchangeRepository(); } }
Step 4. Access Actuator HttpExchanges Endpoint
At this moment, the /actuator/httpexchanges endpoint should be enabled. So your next step will be to Build and Run your Spring Boot application.
Once your application is up and running, open the following URL in the browser window:
http://localhost:8080/actuator/httpexchanges
Refresh the page, and you should get a similar response in response:
{ "exchanges":[ { "timestamp":"2022-12-29T22:03:56.047787Z", "request":{ "uri":"http://localhost:8080/actuator/httpexchanges", "method":"GET", "headers":{ "host":[ "localhost:8080" ], "upgrade-insecure-requests":[ "1" ], "accept":[ "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8" ], "user-agent":[ "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/16.0 Safari/605.1.15" ], "accept-language":[ "en-CA,en-US;q=0.9,en;q=0.8" ], "accept-encoding":[ "gzip, deflate" ], "connection":[ "keep-alive" ] } }, "response":{ "status":200, "headers":{ "Content-Type":[ "application/vnd.spring-boot.actuator.v3+json" ], "Transfer-Encoding":[ "chunked" ], "Date":[ "Thu, 29 Dec 2022 22:03:56 GMT" ], "Keep-Alive":[ "timeout=60" ], "Connection":[ "keep-alive" ] } }, "timeTaken":"PT0.086595S" } ] }
I hope this tutorial was helpful to you. Check out the Spring Cloud and Spring Boot tutorials pages to learn more.
Happy learning!