diff --git a/chaos-monkey-docs/src/main/asciidoc/changes.adoc b/chaos-monkey-docs/src/main/asciidoc/changes.adoc
index 06e61419..dde22140 100644
--- a/chaos-monkey-docs/src/main/asciidoc/changes.adoc
+++ b/chaos-monkey-docs/src/main/asciidoc/changes.adoc
@@ -11,10 +11,11 @@ Built with Spring Boot {spring-boot-version}
=== New Features
// - https://github.com/codecentric/chaos-monkey-spring-boot/pull/xxx[#xxx] Added example entry. Please don't remove.
+- https://github.com/codecentric/chaos-monkey-spring-boot/pull/618[#618] Upgrade to Spring Boot 4 and Spring Cloud 2025.1
=== Contributors
This release was only possible because of these great humans ❤️:
-// - https://github.com/octocat[@octocat]
+- https://github.com/bmatthews68[@bmatthews68]
Thank you for your support!
diff --git a/chaos-monkey-docs/src/main/asciidoc/endpoints.adoc b/chaos-monkey-docs/src/main/asciidoc/endpoints.adoc
index b6201231..608252af 100644
--- a/chaos-monkey-docs/src/main/asciidoc/endpoints.adoc
+++ b/chaos-monkey-docs/src/main/asciidoc/endpoints.adoc
@@ -11,8 +11,8 @@ https://docs.spring.io/spring-boot/docs/current/reference/html/actuator.html[Spr
[source,txt,subs="verbatim,attributes",role="primary"]
.application.properties:
----
-management.endpoint.chaosmonkey.enabled=true
-management.endpoint.chaosmonkeyjmx.enabled=true
+management.endpoint.chaosmonkey.access=unrestricted
+management.endpoint.chaosmonkeyjmx.access=unrestricted
# include all endpoints
management.endpoints.web.exposure.include=*
diff --git a/chaos-monkey-docs/src/main/asciidoc/getting-started.adoc b/chaos-monkey-docs/src/main/asciidoc/getting-started.adoc
index d40655be..9004f550 100644
--- a/chaos-monkey-docs/src/main/asciidoc/getting-started.adoc
+++ b/chaos-monkey-docs/src/main/asciidoc/getting-started.adoc
@@ -90,7 +90,7 @@ Start your Spring Boot application, add Chaos Monkey for Spring Boot JAR and pro
----
java -cp your-app.jar
-Dloader.path=chaos-monkey-spring-boot-{project-version}-jar-with-dependencies.jar
- org.springframework.boot.loader.PropertiesLauncher
+ org.springframework.boot.loader.launch.PropertiesLauncher
--spring.profiles.active=chaos-monkey
--spring.config.location=file:./chaos-monkey.properties
----
diff --git a/chaos-monkey-spring-boot/pom.xml b/chaos-monkey-spring-boot/pom.xml
index b5d1fe84..efc73512 100644
--- a/chaos-monkey-spring-boot/pom.xml
+++ b/chaos-monkey-spring-boot/pom.xml
@@ -48,14 +48,29 @@
org.aspectj
aspectjweaver
+
+ org.jspecify
+ jspecify
+
org.springframework.boot
- spring-boot-starter-web
+ spring-boot-starter-webmvc
provided
- com.fasterxml.jackson.core
+ org.springframework.boot
+ spring-boot-starter-restclient
+ provided
+
+
+ org.springframework.boot
+ spring-boot-starter-webclient
+ provided
+
+
+ tools.jackson.core
jackson-databind
+ 3.0.3
org.springframework.boot
@@ -69,7 +84,7 @@
org.springdoc
- springdoc-openapi-ui
+ springdoc-openapi-starter-webmvc-ui
${spring-doc.version}
provided
@@ -120,6 +135,11 @@
spring-boot-starter-actuator
true
+
+ org.springframework.boot
+ spring-boot-health
+ true
+
org.springframework.boot
spring-boot-starter-test
@@ -146,6 +166,11 @@
unleash-client-java
true
+
+ org.springframework.boot
+ spring-boot-resttestclient
+ test
+
diff --git a/chaos-monkey-spring-boot/src/main/java/de/codecentric/spring/boot/chaos/monkey/assaults/KillAppAssault.java b/chaos-monkey-spring-boot/src/main/java/de/codecentric/spring/boot/chaos/monkey/assaults/KillAppAssault.java
index 557ca599..34765e1d 100644
--- a/chaos-monkey-spring-boot/src/main/java/de/codecentric/spring/boot/chaos/monkey/assaults/KillAppAssault.java
+++ b/chaos-monkey-spring-boot/src/main/java/de/codecentric/spring/boot/chaos/monkey/assaults/KillAppAssault.java
@@ -19,12 +19,12 @@
import de.codecentric.spring.boot.chaos.monkey.component.MetricType;
import de.codecentric.spring.boot.chaos.monkey.configuration.AssaultProperties;
import de.codecentric.spring.boot.chaos.monkey.configuration.ChaosMonkeySettings;
+import org.jspecify.annotations.NonNull;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.boot.SpringApplication;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
-import org.springframework.lang.NonNull;
import java.util.concurrent.TimeUnit;
diff --git a/chaos-monkey-spring-boot/src/main/java/de/codecentric/spring/boot/chaos/monkey/configuration/AssaultException.java b/chaos-monkey-spring-boot/src/main/java/de/codecentric/spring/boot/chaos/monkey/configuration/AssaultException.java
index bb30b6b5..8e153967 100644
--- a/chaos-monkey-spring-boot/src/main/java/de/codecentric/spring/boot/chaos/monkey/configuration/AssaultException.java
+++ b/chaos-monkey-spring-boot/src/main/java/de/codecentric/spring/boot/chaos/monkey/configuration/AssaultException.java
@@ -16,8 +16,7 @@
package de.codecentric.spring.boot.chaos.monkey.configuration;
import com.fasterxml.jackson.annotation.JsonIgnore;
-import com.fasterxml.jackson.core.JsonProcessingException;
-import com.fasterxml.jackson.databind.ObjectMapper;
+import tools.jackson.databind.ObjectMapper;
import java.lang.reflect.Constructor;
import java.lang.reflect.Method;
import java.util.ArrayList;
@@ -29,6 +28,8 @@
import org.slf4j.LoggerFactory;
import org.springframework.boot.context.properties.NestedConfigurationProperty;
import org.springframework.util.ClassUtils;
+import tools.jackson.core.JacksonException;
+import tools.jackson.databind.exc.MismatchedInputException;
@Data
public class AssaultException {
@@ -74,7 +75,7 @@ private Throwable getThrowable() {
try {
ThrowableCreator creator = getCreator();
instance = creator.create(getExceptionArgumentValues());
- } catch (ReflectiveOperationException | ClassCastException | JsonProcessingException e) {
+ } catch (ReflectiveOperationException | ClassCastException | JacksonException e) {
Logger.warn("Failed to create custom exception. Fallback: Throw RuntimeException");
instance = new RuntimeException("Chaos Monkey - RuntimeException (Fallback)", e);
}
@@ -105,7 +106,7 @@ private List> getExceptionArgumentTypes() throws ClassNotFoundException
return exceptionArgumentTypes;
}
- private List