Skip to content

Commit ba1627b

Browse files
committed
Make JCacheCacheMeterBinderProvider back off when user provides a bean (fixes #46212)
Signed-off-by: Siva Sai Udayagiri <[email protected]>
1 parent c63eba3 commit ba1627b

File tree

2 files changed

+43
-0
lines changed

2 files changed

+43
-0
lines changed

spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/cache/CacheMeterBinderProvidersConfiguration.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@
3030
import org.springframework.boot.actuate.metrics.cache.JCacheCacheMeterBinderProvider;
3131
import org.springframework.boot.actuate.metrics.cache.RedisCacheMeterBinderProvider;
3232
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
33+
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
3334
import org.springframework.cache.caffeine.CaffeineCache;
3435
import org.springframework.cache.jcache.JCacheCache;
3536
import org.springframework.context.annotation.Bean;
@@ -83,6 +84,7 @@ HazelcastCacheMeterBinderProvider hazelcastCacheMeterBinderProvider() {
8384
static class JCacheCacheMeterBinderProviderConfiguration {
8485

8586
@Bean
87+
@ConditionalOnMissingBean(JCacheCacheMeterBinderProvider.class)
8688
JCacheCacheMeterBinderProvider jCacheCacheMeterBinderProvider() {
8789
return new JCacheCacheMeterBinderProvider();
8890
}
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
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.actuate.autoconfigure.metrics.cache;
18+
19+
import org.junit.jupiter.api.Test;
20+
21+
import org.springframework.boot.actuate.metrics.cache.JCacheCacheMeterBinderProvider;
22+
import org.springframework.boot.autoconfigure.AutoConfigurations;
23+
import org.springframework.boot.test.context.runner.ApplicationContextRunner;
24+
25+
import static org.assertj.core.api.Assertions.assertThat;
26+
27+
class JCacheCacheMeterBinderProviderBackOffTests {
28+
29+
private final ApplicationContextRunner contextRunner = new ApplicationContextRunner()
30+
.withConfiguration(AutoConfigurations.of(CacheMetricsAutoConfiguration.class));
31+
32+
@Test
33+
void backsOffWhenUserProvidesProvider() {
34+
JCacheCacheMeterBinderProvider custom = new JCacheCacheMeterBinderProvider();
35+
this.contextRunner.withBean(JCacheCacheMeterBinderProvider.class, () -> custom).run((context) -> {
36+
var bean = context.getBean(JCacheCacheMeterBinderProvider.class);
37+
assertThat(bean).isSameAs(custom);
38+
});
39+
}
40+
41+
}

0 commit comments

Comments
 (0)