Skip to content

Commit 6c6f44e

Browse files
committed
Move SSL auto-configuration out of actuator-autoconfigure-all
1 parent 9b3bf95 commit 6c6f44e

File tree

14 files changed

+91
-88
lines changed

14 files changed

+91
-88
lines changed

spring-boot-project/spring-boot-actuator-autoconfigure-all/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,6 @@ org.springframework.boot.actuate.autoconfigure.cloudfoundry.servlet.CloudFoundry
33
org.springframework.boot.actuate.autoconfigure.observability.ObservabilityAutoConfiguration
44
org.springframework.boot.actuate.autoconfigure.security.reactive.ReactiveManagementWebSecurityAutoConfiguration
55
org.springframework.boot.actuate.autoconfigure.security.servlet.ManagementWebSecurityAutoConfiguration
6-
org.springframework.boot.actuate.autoconfigure.ssl.SslHealthContributorAutoConfiguration
7-
org.springframework.boot.actuate.autoconfigure.ssl.SslObservabilityAutoConfiguration
86
org.springframework.boot.actuate.autoconfigure.tracing.BraveAutoConfiguration
97
org.springframework.boot.actuate.autoconfigure.tracing.MicrometerTracingAutoConfiguration
108
org.springframework.boot.actuate.autoconfigure.tracing.NoopTracerAutoConfiguration

spring-boot-project/spring-boot-actuator-autoconfigure-all/src/test/java/org/springframework/boot/actuate/autoconfigure/ssl/SslObservabilityAutoConfigurationTests.java

Lines changed: 0 additions & 66 deletions
This file was deleted.

spring-boot-project/spring-boot-actuator-autoconfigure/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ org.springframework.boot.actuate.autoconfigure.management.HeapDumpWebEndpointAut
2121
org.springframework.boot.actuate.autoconfigure.management.ThreadDumpEndpointAutoConfiguration
2222
org.springframework.boot.actuate.autoconfigure.sbom.SbomEndpointAutoConfiguration
2323
org.springframework.boot.actuate.autoconfigure.scheduling.ScheduledTasksEndpointAutoConfiguration
24+
org.springframework.boot.actuate.autoconfigure.ssl.SslHealthContributorAutoConfiguration
2425
org.springframework.boot.actuate.autoconfigure.startup.StartupEndpointAutoConfiguration
2526
org.springframework.boot.actuate.autoconfigure.system.DiskSpaceHealthContributorAutoConfiguration
2627
org.springframework.boot.actuate.autoconfigure.web.exchanges.HttpExchangesEndpointAutoConfiguration
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
* limitations under the License.
1515
*/
1616

17-
package org.springframework.boot.actuate.autoconfigure.ssl;
17+
package org.springframework.boot.metrics.autoconfigure.ssl;
1818

1919
import java.time.Clock;
2020
import java.time.Duration;
Lines changed: 11 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -14,44 +14,37 @@
1414
* limitations under the License.
1515
*/
1616

17-
package org.springframework.boot.actuate.autoconfigure.ssl;
17+
package org.springframework.boot.metrics.autoconfigure.ssl;
1818

1919
import io.micrometer.core.instrument.MeterRegistry;
2020

21+
import org.springframework.beans.factory.ObjectProvider;
2122
import org.springframework.boot.autoconfigure.AutoConfiguration;
2223
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
2324
import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;
2425
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
25-
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
2626
import org.springframework.boot.autoconfigure.ssl.SslAutoConfiguration;
27-
import org.springframework.boot.context.properties.EnableConfigurationProperties;
2827
import org.springframework.boot.info.SslInfo;
28+
import org.springframework.boot.metrics.autoconfigure.CompositeMeterRegistryAutoConfiguration;
29+
import org.springframework.boot.metrics.autoconfigure.MetricsAutoConfiguration;
2930
import org.springframework.boot.ssl.SslBundles;
3031
import org.springframework.context.annotation.Bean;
3132

3233
/**
33-
* {@link EnableAutoConfiguration Auto-configuration} for SSL observability.
34+
* {@link EnableAutoConfiguration Auto-configuration} for SSL metrics.
3435
*
3536
* @author Moritz Halbritter
36-
* @since 3.5.0
37+
* @since 4.0.0
3738
*/
38-
@AutoConfiguration(after = SslAutoConfiguration.class,
39-
afterName = { "org.springframework.boot.metrics.autoconfigure.MetricsAutoConfiguration",
40-
"org.springframework.boot.metrics.autoconfigure.CompositeMeterRegistryAutoConfiguration" })
39+
@AutoConfiguration(after = { CompositeMeterRegistryAutoConfiguration.class, MetricsAutoConfiguration.class,
40+
SslAutoConfiguration.class })
4141
@ConditionalOnClass(MeterRegistry.class)
4242
@ConditionalOnBean({ MeterRegistry.class, SslBundles.class })
43-
@EnableConfigurationProperties(SslHealthIndicatorProperties.class)
44-
public class SslObservabilityAutoConfiguration {
43+
public class SslMetricsAutoConfiguration {
4544

4645
@Bean
47-
SslMeterBinder sslMeterBinder(SslInfo sslInfo, SslBundles sslBundles) {
48-
return new SslMeterBinder(sslInfo, sslBundles);
49-
}
50-
51-
@Bean
52-
@ConditionalOnMissingBean
53-
SslInfo sslInfoProvider(SslBundles sslBundles, SslHealthIndicatorProperties properties) {
54-
return new SslInfo(sslBundles);
46+
SslMeterBinder sslMeterBinder(SslBundles sslBundles, ObjectProvider<SslInfo> sslInfo) {
47+
return new SslMeterBinder(sslInfo.getIfAvailable(() -> new SslInfo(sslBundles)), sslBundles);
5548
}
5649

5750
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
/*
2+
* Copyright 2012-2025 the original author or authors.
3+
*
4+
* Licensed under the Apache License, Version 2.0 (the "License");
5+
* you may not use this file except in compliance with the License.
6+
* You may obtain a copy of the License at
7+
*
8+
* https://www.apache.org/licenses/LICENSE-2.0
9+
*
10+
* Unless required by applicable law or agreed to in writing, software
11+
* distributed under the License is distributed on an "AS IS" BASIS,
12+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13+
* See the License for the specific language governing permissions and
14+
* limitations under the License.
15+
*/
16+
17+
/**
18+
* Auto-configuration for SSL metrics.
19+
*/
20+
package org.springframework.boot.metrics.autoconfigure.ssl;
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
* limitations under the License.
1515
*/
1616

17-
package org.springframework.boot.actuate.autoconfigure.ssl;
17+
package org.springframework.boot.metrics.autoconfigure.ssl;
1818

1919
import java.time.Clock;
2020
import java.time.Duration;
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
/*
2+
* Copyright 2012-2025 the original author or authors.
3+
*
4+
* Licensed under the Apache License, Version 2.0 (the "License");
5+
* you may not use this file except in compliance with the License.
6+
* You may obtain a copy of the License at
7+
*
8+
* https://www.apache.org/licenses/LICENSE-2.0
9+
*
10+
* Unless required by applicable law or agreed to in writing, software
11+
* distributed under the License is distributed on an "AS IS" BASIS,
12+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13+
* See the License for the specific language governing permissions and
14+
* limitations under the License.
15+
*/
16+
17+
package org.springframework.boot.metrics.autoconfigure.ssl;
18+
19+
import io.micrometer.core.instrument.simple.SimpleMeterRegistry;
20+
import org.junit.jupiter.api.Test;
21+
22+
import org.springframework.boot.autoconfigure.AutoConfigurations;
23+
import org.springframework.boot.autoconfigure.ssl.SslAutoConfiguration;
24+
import org.springframework.boot.test.context.runner.ApplicationContextRunner;
25+
26+
import static org.assertj.core.api.Assertions.assertThat;
27+
28+
/**
29+
* Tests for {@link SslMetricsAutoConfiguration}.
30+
*
31+
* @author Moritz Halbritter
32+
*/
33+
class SslMetricsAutoConfigurationTests {
34+
35+
private final ApplicationContextRunner contextRunner = new ApplicationContextRunner()
36+
.withConfiguration(AutoConfigurations.of(SslMetricsAutoConfiguration.class));
37+
38+
@Test
39+
void shouldSupplyMeterBinder() {
40+
this.contextRunner.withConfiguration(AutoConfigurations.of(SslAutoConfiguration.class))
41+
.withBean(SimpleMeterRegistry.class)
42+
.run((context) -> assertThat(context).hasSingleBean(SslMeterBinder.class));
43+
}
44+
45+
@Test
46+
void shouldBackOffIfSslBundlesIsMissing() {
47+
this.contextRunner.withBean(SimpleMeterRegistry.class)
48+
.run((context) -> assertThat(context).doesNotHaveBean(SslMeterBinder.class));
49+
}
50+
51+
@Test
52+
void shouldBackOffIfMeterRegistryIsMissing() {
53+
this.contextRunner.withConfiguration(AutoConfigurations.of(SslAutoConfiguration.class))
54+
.run((context) -> assertThat(context).doesNotHaveBean(SslMeterBinder.class));
55+
}
56+
57+
}

0 commit comments

Comments
 (0)