Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
62 commits
Select commit Hold shift + click to select a range
a760dac
chore(deps): update Spring Boot and Spring Cloud versions to RC releases
SteKoe Nov 14, 2025
a45ea34
chore: update imported package names
SteKoe Nov 14, 2025
ccbff6c
chore: update dependencies and refactor imports for Jackson library a…
SteKoe Nov 14, 2025
0b09364
chore: compile ready
SteKoe Nov 14, 2025
52fe51a
chore: fix code style
SteKoe Nov 14, 2025
30958e1
chore: fix tests in server module
SteKoe Nov 14, 2025
27c47ff
chore: "fix" tests in server client
SteKoe Nov 15, 2025
14f1d89
chore: update Spring Boot version to 4.0.0
andreasfritz Nov 21, 2025
55867bb
chore: update Spring Cloud version to 2025.1.0
andreasfritz Nov 28, 2025
cb18976
chore: update instance registration in AdminApplicationDiscoveryTest
andreasfritz Nov 28, 2025
289a676
wip: using unique version for springboot-4 migration based on 3.5.2
Aug 7, 2025
cadbc7d
wip: using unique version for springboot-4 migration based on 3.5.2
Aug 7, 2025
c7ce798
wip: first version which compiles and no checkstyle warnings
Aug 9, 2025
e116f0b
fix: add .checkstyle from eclipse to .gitignore
Aug 9, 2025
076d500
test: Could not find class [org.springframework.boot.mail.autoconfigu…
Aug 10, 2025
37bc174
test: try to fix endless hanging test
Aug 10, 2025
6efbf8b
test: Could not find class [org.springframework.boot.mail.autoconfigu…
Aug 10, 2025
3c287b1
wip: restclient vs. webclient
Aug 11, 2025
f68d224
wip: using unique version for springboot-4 migration based on 3.5.2
Aug 7, 2025
cde228a
wip: using unique version for springboot-4 migration based on 3.5.2
Aug 7, 2025
816e1c7
wip: first version which compiles and no checkstyle warnings
Aug 9, 2025
b4d6f50
wip: restclient vs. webclient
Aug 11, 2025
cb6cd3e
wip: move on to springboot 4.0.0-M3 and springcloud 2025.1.0-M2
Oct 3, 2025
4c46644
wip: more code-formatting cleanups (final removed)
Oct 3, 2025
e9f78f0
fix: some compiler issues after rebase
Nov 28, 2025
eb5a20a
wip: still a snapshot :-)
Nov 28, 2025
1b31134
chore(deps): update dependency vitest to v4.0.9 (#4837)
renovate[bot] Nov 14, 2025
1eab87a
chore(deps): update dependency org.wiremock:wiremock-standalone to v3…
renovate[bot] Nov 14, 2025
4ecab29
chore(deps): update dependency msw to v2.12.2 (#4840)
renovate[bot] Nov 14, 2025
a8bc4a6
chore(deps): update dependency org.apache.maven.plugins:maven-jar-plu…
renovate[bot] Nov 15, 2025
6b493ad
feat: implementation for mattermost notifier (#4821)
EmirBoyaci Nov 15, 2025
7f7763d
fix: rendering html in different components (#4842)
SteKoe Nov 16, 2025
0dc3c43
fix: enhance metadata parsing with LAX mode for conflict resolution (…
SteKoe Nov 16, 2025
e7ee058
fix: improve UI style consistency across button components and templa…
SteKoe Nov 16, 2025
c833e8c
chore(deps): update dependency vitest to v4.0.10 (#4845)
renovate[bot] Nov 17, 2025
c8abfe0
chore(deps): update storybook monorepo to v10.0.8 (#4846)
renovate[bot] Nov 17, 2025
13b0595
chore(deps): update dependency sass to v1.94.1 (#4848)
renovate[bot] Nov 18, 2025
03eba35
chore(deps): update dependency glob to v11.1.0 [security] (#4847)
renovate[bot] Nov 18, 2025
788b366
chore(deps): update typescript-eslint monorepo to v8.47.0 (#4850)
renovate[bot] Nov 18, 2025
f1ef9b0
fix(deps): update dependency org.jolokia:jolokia-support-spring to v2…
renovate[bot] Nov 18, 2025
d6fea7f
fix: adjust table layout for thread dump chart to prevent width overf…
SteKoe Nov 18, 2025
76df492
fix(deps): update dependency glob to v12 (#4852)
renovate[bot] Nov 18, 2025
8701e06
feat: add legend to SBOM graph for better visualization (#4853)
SteKoe Nov 18, 2025
929c863
Added backpressure handling to prevent memory buildup and system degr…
ulischulte Nov 18, 2025
e1c0f14
chore(deps): update dependency @vitejs/plugin-vue to v6.0.2 (#4854)
renovate[bot] Nov 19, 2025
909b770
fix(deps): update dependency glob to v13 (#4855)
renovate[bot] Nov 19, 2025
0328bd3
chore(deps): update dependency sass to v1.94.2 (#4856)
renovate[bot] Nov 20, 2025
cd8b77c
chore(deps): update dependency vite to v7.2.4 (#4857)
renovate[bot] Nov 20, 2025
1ddc2c2
chore(deps): update dependency vitest to v4.0.12 (#4860)
renovate[bot] Nov 20, 2025
77ecae6
chore(deps): update dependency vitest to v4.0.13 (#4864)
renovate[bot] Nov 21, 2025
fd7ca4f
chore(deps): update dependency eslint-plugin-vue to v10.6.0 (#4865)
renovate[bot] Nov 22, 2025
cf1f1d2
fix(deps): update dependency vue-i18n to v11.2.1 (#4866)
renovate[bot] Nov 22, 2025
0f06da1
chore(deps): update dependency msw to v2.12.3 (#4867)
renovate[bot] Nov 23, 2025
88db930
chore(deps): update dependency org.codehaus.mojo:versions-maven-plugi…
renovate[bot] Nov 23, 2025
115d825
fix(deps): update dependency vue to v3.5.25 (#4869)
renovate[bot] Nov 24, 2025
1afaf6f
chore(deps): update typescript-eslint monorepo to v8.48.0 (#4870)
renovate[bot] Nov 24, 2025
f1e5a2d
chore(deps): update dependency org.codehaus.mojo:versions-maven-plugi…
renovate[bot] Nov 24, 2025
a0993d3
chore(deps): update dependency vitest to v4.0.14 (#4875)
renovate[bot] Nov 25, 2025
fa9080d
chore(deps): update dependency eslint-plugin-vue to v10.6.1 (#4876)
renovate[bot] Nov 26, 2025
08d3199
fix(deps): update dependency vue-i18n to v11.2.2 (#4877)
renovate[bot] Nov 26, 2025
a425415
chore(deps): update storybook monorepo to v10.1.0 (#4878)
renovate[bot] Nov 26, 2025
4a96e55
chore: update npm settings in renovate.json for release age and PR cr…
SteKoe Nov 27, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ target/
.project
.factorypath
.apt_generated/
.checkstyle

# Intellij
.idea/
Expand Down
16 changes: 8 additions & 8 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -30,10 +30,10 @@
<url>https://github.com/codecentric/spring-boot-admin/</url>

<properties>
<revision>3.5.7-SNAPSHOT</revision>
<revision>4.0.0-M1-SNAPSHOT</revision>

<java.version>17</java.version>
<node.version>v22.12.0</node.version>
<node.version>v22.14.0</node.version>

<require.maven.version>3.9</require.maven.version>

Expand All @@ -47,15 +47,15 @@
<maven.site.skip>true</maven.site.skip>

<!-- used dependencies versions -->
<spring-boot.version>3.5.7</spring-boot.version>
<spring-cloud.version>2025.0.0</spring-cloud.version>
<spring-boot.version>4.0.0</spring-boot.version>
<spring-cloud.version>2025.1.0</spring-cloud.version>

<jolokia-support-spring.version>2.4.1</jolokia-support-spring.version>
<jolokia-support-spring.version>2.4.2</jolokia-support-spring.version>

<checkstyle.version>12.1.2</checkstyle.version>
<findbugs-jsr305.version>3.0.2</findbugs-jsr305.version>

<wiremock.version>3.13.1</wiremock.version>
<wiremock.version>3.13.2</wiremock.version>
<hazelcast.version>5.6.0</hazelcast.version>
<awaitility.version>4.3.0</awaitility.version>
<testcontainers.version>1.21.3</testcontainers.version>
Expand All @@ -65,15 +65,15 @@
<build-helper-maven-plugin.version>3.6.1</build-helper-maven-plugin.version>
<maven-compiler-plugin.version>3.14.1</maven-compiler-plugin.version>
<!-- because of https://github.com/mojohaus/versions/issues/855 -->
<versions-maven-plugin.version>2.19.1</versions-maven-plugin.version>
<versions-maven-plugin.version>2.20.1</versions-maven-plugin.version>
<maven-clean-plugin.version>3.5.0</maven-clean-plugin.version>
<maven-dependency-plugin.version>3.9.0</maven-dependency-plugin.version>
<maven-deploy-plugin.version>3.1.4</maven-deploy-plugin.version>
<maven-enforcer-plugin.version>3.6.2</maven-enforcer-plugin.version>
<maven-surefire-plugin.version>3.5.4</maven-surefire-plugin.version>
<maven-failsafe-plugin.version>3.5.4</maven-failsafe-plugin.version>
<maven-install-plugin.version>3.1.4</maven-install-plugin.version>
<maven-jar-plugin.version>3.4.2</maven-jar-plugin.version>
<maven-jar-plugin.version>3.5.0</maven-jar-plugin.version>
<maven-javadoc-plugin.version>3.12.0</maven-javadoc-plugin.version>
<maven-resources-plugin.version>3.3.1</maven-resources-plugin.version>
<maven-source-plugin.version>3.3.1</maven-source-plugin.version>
Expand Down
6 changes: 5 additions & 1 deletion renovate.json
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,11 @@
"bot",
"dependencies"
],

"npm": {
"minimumReleaseAge": "5 days",
"internalChecksFilter": "strict",
"prCreation": "not-pending"
},
"packageRules": [
{
"description": "Automatically merge minor and patch-level updates when checks pass, creates a PR otherwise",
Expand Down
33 changes: 26 additions & 7 deletions spring-boot-admin-client/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -34,21 +34,36 @@
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
<artifactId>spring-boot-starter-classic</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<artifactId>spring-webmvc</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-restclient</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-webclient</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-webflux</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-autoconfigure-processor</artifactId>
Expand All @@ -64,6 +79,10 @@
<artifactId>spring-webflux</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>com.google.code.findbugs</groupId>
<artifactId>jsr305</artifactId>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
Expand All @@ -74,11 +93,6 @@
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-webflux</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.wiremock</groupId>
<artifactId>wiremock-standalone</artifactId>
Expand All @@ -89,5 +103,10 @@
<artifactId>awaitility</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
</project>
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@
import org.springframework.aot.hint.MemberCategory;
import org.springframework.aot.hint.RuntimeHints;
import org.springframework.aot.hint.RuntimeHintsRegistrar;
import org.springframework.boot.web.context.WebServerInitializedEvent;
import org.springframework.boot.web.server.context.WebServerInitializedEvent;
import org.springframework.context.annotation.Configuration;

import de.codecentric.boot.admin.client.registration.Application;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,17 +29,18 @@
import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.boot.autoconfigure.condition.ConditionalOnWebApplication;
import org.springframework.boot.autoconfigure.web.ServerProperties;
import org.springframework.boot.autoconfigure.web.client.RestClientAutoConfiguration;
import org.springframework.boot.autoconfigure.web.client.RestTemplateAutoConfiguration;
import org.springframework.boot.autoconfigure.web.reactive.WebFluxProperties;
import org.springframework.boot.autoconfigure.web.reactive.function.client.WebClientAutoConfiguration;
import org.springframework.boot.autoconfigure.web.servlet.DispatcherServletAutoConfiguration;
import org.springframework.boot.autoconfigure.web.servlet.DispatcherServletPath;
import org.springframework.boot.autoconfigure.condition.ConditionalOnWebApplication.Type;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.boot.http.client.ClientHttpRequestFactoryBuilder;
import org.springframework.boot.http.client.ClientHttpRequestFactorySettings;
import org.springframework.boot.web.client.RestTemplateBuilder;
import org.springframework.boot.http.client.HttpClientSettings;
import org.springframework.boot.restclient.RestTemplateBuilder;
import org.springframework.boot.restclient.autoconfigure.RestClientAutoConfiguration;
import org.springframework.boot.restclient.autoconfigure.RestTemplateAutoConfiguration;
import org.springframework.boot.web.server.autoconfigure.ServerProperties;
import org.springframework.boot.webclient.autoconfigure.WebClientAutoConfiguration;
import org.springframework.boot.webflux.autoconfigure.WebFluxProperties;
import org.springframework.boot.webmvc.autoconfigure.DispatcherServletAutoConfiguration;
import org.springframework.boot.webmvc.autoconfigure.DispatcherServletPath;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Conditional;
import org.springframework.context.annotation.Configuration;
Expand All @@ -64,7 +65,6 @@
import de.codecentric.boot.admin.client.registration.metadata.MetadataContributor;
import de.codecentric.boot.admin.client.registration.metadata.StartupDateMetadataContributor;

import static org.springframework.boot.autoconfigure.condition.ConditionalOnWebApplication.Type;
import static org.springframework.web.reactive.function.client.ExchangeFilterFunctions.basicAuthentication;

@Configuration(proxyBeanMethods = false)
Expand Down Expand Up @@ -159,22 +159,25 @@ public RegistrationClient registrationClient(ClientProperties client) {
}

@Configuration(proxyBeanMethods = false)
@ConditionalOnBean({ RestClient.Builder.class, ClientHttpRequestFactoryBuilder.class })
@ConditionalOnBean(RestClient.Builder.class)
public static class RestClientRegistrationClientConfig {

@Bean
@ConditionalOnMissingBean
public RegistrationClient registrationClient(ClientProperties client, RestClient.Builder restClientBuilder,
ClientHttpRequestFactoryBuilder<?> clientHttpRequestFactoryBuilder) {
var factorySettings = ClientHttpRequestFactorySettings.defaults()
public RegistrationClient registrationClient(ClientProperties client, RestClient.Builder restClientBuilder) {
var factorySettings = HttpClientSettings.defaults()
.withConnectTimeout(client.getConnectTimeout())
.withReadTimeout(client.getReadTimeout());
var clientHttpRequestFactory = clientHttpRequestFactoryBuilder.build(factorySettings);

var clientHttpRequestFactory = ClientHttpRequestFactoryBuilder.detect().build(factorySettings);

restClientBuilder = restClientBuilder.requestFactory(clientHttpRequestFactory);

if (client.getUsername() != null && client.getPassword() != null) {
restClientBuilder = restClientBuilder
.requestInterceptor(new BasicAuthenticationInterceptor(client.getUsername(), client.getPassword()));
}

var restClient = restClientBuilder.build();
return new RestClientRegistrationClient(restClient);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,9 +27,9 @@
import org.springframework.boot.autoconfigure.condition.ConditionalOnCloudPlatform;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.boot.autoconfigure.condition.ConditionalOnWebApplication;
import org.springframework.boot.autoconfigure.web.ServerProperties;
import org.springframework.boot.cloud.CloudPlatform;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.boot.web.server.autoconfigure.ServerProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Conditional;
import org.springframework.context.annotation.Configuration;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,8 +19,8 @@
import org.springframework.boot.actuate.autoconfigure.endpoint.web.WebEndpointAutoConfiguration;
import org.springframework.boot.autoconfigure.AutoConfigureAfter;
import org.springframework.boot.autoconfigure.condition.ConditionalOnWebApplication;
import org.springframework.boot.autoconfigure.web.client.RestTemplateAutoConfiguration;
import org.springframework.boot.autoconfigure.web.reactive.function.client.WebClientAutoConfiguration;
import org.springframework.boot.restclient.autoconfigure.RestTemplateAutoConfiguration;
import org.springframework.boot.webclient.autoconfigure.WebClientAutoConfiguration;
import org.springframework.context.annotation.Conditional;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.ImportRuntimeHints;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@
import org.springframework.boot.actuate.autoconfigure.endpoint.web.WebEndpointProperties;
import org.springframework.boot.actuate.autoconfigure.web.server.ManagementServerProperties;
import org.springframework.boot.actuate.endpoint.web.PathMappedEndpoints;
import org.springframework.boot.autoconfigure.web.ServerProperties;
import org.springframework.boot.web.server.autoconfigure.ServerProperties;
import org.springframework.util.StringUtils;

import de.codecentric.boot.admin.client.config.CloudFoundryApplicationProperties;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,9 +25,9 @@
import org.springframework.boot.actuate.autoconfigure.web.server.ManagementServerProperties;
import org.springframework.boot.actuate.endpoint.EndpointId;
import org.springframework.boot.actuate.endpoint.web.PathMappedEndpoints;
import org.springframework.boot.autoconfigure.web.ServerProperties;
import org.springframework.boot.web.context.WebServerInitializedEvent;
import org.springframework.boot.web.server.Ssl;
import org.springframework.boot.web.server.autoconfigure.ServerProperties;
import org.springframework.boot.web.server.context.WebServerInitializedEvent;
import org.springframework.context.event.EventListener;
import org.springframework.lang.Nullable;
import org.springframework.util.StringUtils;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,9 +19,9 @@
import org.springframework.boot.actuate.autoconfigure.endpoint.web.WebEndpointProperties;
import org.springframework.boot.actuate.autoconfigure.web.server.ManagementServerProperties;
import org.springframework.boot.actuate.endpoint.web.PathMappedEndpoints;
import org.springframework.boot.autoconfigure.web.ServerProperties;
import org.springframework.boot.autoconfigure.web.reactive.WebFluxProperties;
import org.springframework.boot.web.server.Ssl;
import org.springframework.boot.web.server.autoconfigure.ServerProperties;
import org.springframework.boot.webflux.autoconfigure.WebFluxProperties;
import org.springframework.util.StringUtils;
import org.springframework.web.util.UriComponentsBuilder;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,9 +20,9 @@
import org.springframework.boot.actuate.autoconfigure.endpoint.web.WebEndpointProperties;
import org.springframework.boot.actuate.autoconfigure.web.server.ManagementServerProperties;
import org.springframework.boot.actuate.endpoint.web.PathMappedEndpoints;
import org.springframework.boot.autoconfigure.web.ServerProperties;
import org.springframework.boot.autoconfigure.web.servlet.DispatcherServletPath;
import org.springframework.boot.web.server.Ssl;
import org.springframework.boot.web.server.autoconfigure.ServerProperties;
import org.springframework.boot.webmvc.autoconfigure.DispatcherServletPath;
import org.springframework.util.StringUtils;
import org.springframework.web.util.UriComponentsBuilder;

Expand Down Expand Up @@ -55,8 +55,8 @@ public ServletApplicationFactory(InstanceProperties instance, ManagementServerPr

@Override
protected String getServiceUrl() {
if (instance.getServiceUrl() != null) {
return instance.getServiceUrl();
if (this.instance.getServiceUrl() != null) {
return this.instance.getServiceUrl();
}

return UriComponentsBuilder.fromUriString(getServiceBaseUrl())
Expand All @@ -67,7 +67,7 @@ protected String getServiceUrl() {

@Override
protected String getManagementBaseUrl() {
String baseUrl = instance.getManagementBaseUrl();
String baseUrl = this.instance.getManagementBaseUrl();

if (StringUtils.hasText(baseUrl)) {
return baseUrl;
Expand All @@ -81,7 +81,7 @@ protected String getManagementBaseUrl() {
.toUriString();
}

Ssl ssl = (management.getSsl() != null) ? management.getSsl() : server.getSsl();
Ssl ssl = (this.management.getSsl() != null) ? this.management.getSsl() : this.server.getSsl();
return UriComponentsBuilder.newInstance()
.scheme(getScheme(ssl))
.host(getManagementHost())
Expand All @@ -91,11 +91,11 @@ protected String getManagementBaseUrl() {
}

protected String getManagementContextPath() {
return management.getBasePath();
return this.management.getBasePath();
}

protected String getServerContextPath() {
return servletContext.getContextPath();
return this.servletContext.getContextPath();
}

protected String getDispatcherServletPrefix() {
Expand Down
Loading