diff --git a/pom.xml b/pom.xml
index cd0ff05e8a..fc3567be51 100644
--- a/pom.xml
+++ b/pom.xml
@@ -651,6 +651,7 @@
spring-boot-keycloak
spring-boot-kotlin
spring-boot-logging-log4j2
+ spring-boot-management
spring-boot-mvc
spring-boot-mvc-birt
spring-boot-ops
@@ -1328,6 +1329,7 @@
spring-boot-jasypt
spring-boot-keycloak
spring-boot-logging-log4j2
+ spring-boot-management
spring-boot-mvc
spring-boot-mvc-birt
spring-boot-ops
diff --git a/spring-boot-management/pom.xml b/spring-boot-management/pom.xml
new file mode 100644
index 0000000000..2b3e8f5d06
--- /dev/null
+++ b/spring-boot-management/pom.xml
@@ -0,0 +1,47 @@
+
+
+ 4.0.0
+
+ com.baeldung
+ parent-boot-2
+ 0.0.1-SNAPSHOT
+ ../parent-boot-2
+
+ com.baeldung
+ spring-boot-management
+ 0.0.1-SNAPSHOT
+ spring-boot-management
+
+
+ 1.8
+
+
+
+
+ org.springframework.boot
+ spring-boot-starter-actuator
+
+
+ org.springframework.boot
+ spring-boot-starter-web
+
+
+
+ org.springframework.boot
+ spring-boot-starter-test
+ test
+
+
+
+
+
+
+ org.springframework.boot
+ spring-boot-maven-plugin
+
+
+
+
diff --git a/spring-boot-management/src/main/java/com/baeldung/spring/boot/management/trace/App.java b/spring-boot-management/src/main/java/com/baeldung/spring/boot/management/trace/App.java
new file mode 100644
index 0000000000..150e451c57
--- /dev/null
+++ b/spring-boot-management/src/main/java/com/baeldung/spring/boot/management/trace/App.java
@@ -0,0 +1,13 @@
+package com.baeldung.spring.boot.management.trace;
+
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+
+@SpringBootApplication
+public class App {
+
+ public static void main(String[] args) {
+ SpringApplication.run(App.class);
+ }
+
+}
diff --git a/spring-boot-management/src/main/java/com/baeldung/spring/boot/management/trace/CustomTraceRepository.java b/spring-boot-management/src/main/java/com/baeldung/spring/boot/management/trace/CustomTraceRepository.java
new file mode 100644
index 0000000000..d85c043dc0
--- /dev/null
+++ b/spring-boot-management/src/main/java/com/baeldung/spring/boot/management/trace/CustomTraceRepository.java
@@ -0,0 +1,29 @@
+package com.baeldung.spring.boot.management.trace;
+
+import java.util.Collections;
+import java.util.List;
+import java.util.concurrent.atomic.AtomicReference;
+
+import org.springframework.boot.actuate.trace.http.HttpTrace;
+import org.springframework.boot.actuate.trace.http.HttpTraceRepository;
+import org.springframework.stereotype.Repository;
+
+@Repository
+public class CustomTraceRepository implements HttpTraceRepository {
+
+ AtomicReference lastTrace = new AtomicReference<>();
+
+ @Override
+ public List findAll() {
+ return Collections.singletonList(lastTrace.get());
+ }
+
+ @Override
+ public void add(HttpTrace trace) {
+ if ("GET".equals(trace.getRequest()
+ .getMethod())) {
+ lastTrace.set(trace);
+ }
+ }
+
+}
diff --git a/spring-boot-management/src/main/java/com/baeldung/spring/boot/management/trace/EchoController.java b/spring-boot-management/src/main/java/com/baeldung/spring/boot/management/trace/EchoController.java
new file mode 100644
index 0000000000..70bc27a3bb
--- /dev/null
+++ b/spring-boot-management/src/main/java/com/baeldung/spring/boot/management/trace/EchoController.java
@@ -0,0 +1,15 @@
+package com.baeldung.spring.boot.management.trace;
+
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+
+@RestController("echo")
+public class EchoController {
+
+ @GetMapping
+ public String echo(@RequestParam("msg") String msg) {
+ return "echoing " + msg;
+ }
+
+}
diff --git a/spring-boot-management/src/main/java/com/baeldung/spring/boot/management/trace/TraceRequestFilter.java b/spring-boot-management/src/main/java/com/baeldung/spring/boot/management/trace/TraceRequestFilter.java
new file mode 100644
index 0000000000..fd6312df47
--- /dev/null
+++ b/spring-boot-management/src/main/java/com/baeldung/spring/boot/management/trace/TraceRequestFilter.java
@@ -0,0 +1,27 @@
+package com.baeldung.spring.boot.management.trace;
+
+import javax.servlet.ServletException;
+import javax.servlet.http.HttpServletRequest;
+
+import org.springframework.boot.actuate.trace.http.HttpExchangeTracer;
+import org.springframework.boot.actuate.trace.http.HttpTraceRepository;
+import org.springframework.boot.actuate.web.trace.servlet.HttpTraceFilter;
+import org.springframework.stereotype.Component;
+
+@Component
+public class TraceRequestFilter extends HttpTraceFilter {
+ /**
+ * Create a new {@link HttpTraceFilter} instance.
+ *
+ * @param repository the trace repository
+ * @param tracer used to trace exchanges
+ */
+ public TraceRequestFilter(HttpTraceRepository repository, HttpExchangeTracer tracer) {
+ super(repository, tracer);
+ }
+
+ @Override
+ protected boolean shouldNotFilter(HttpServletRequest request) throws ServletException {
+ return request.getServletPath().contains("actuator");
+ }
+}
diff --git a/spring-boot-management/src/main/resources/application.properties b/spring-boot-management/src/main/resources/application.properties
new file mode 100644
index 0000000000..835ca64eac
--- /dev/null
+++ b/spring-boot-management/src/main/resources/application.properties
@@ -0,0 +1,3 @@
+management.endpoints.web.exposure.include=httptrace
+management.trace.http.include=RESPONSE_HEADERS
+