diff --git a/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/availability/ApplicationAvailabilityAutoConfiguration.java b/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/availability/ApplicationAvailabilityAutoConfiguration.java index e9b8397d4198..769c5a3cc8a9 100644 --- a/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/availability/ApplicationAvailabilityAutoConfiguration.java +++ b/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/availability/ApplicationAvailabilityAutoConfiguration.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2022 the original author or authors. + * Copyright 2012-2023 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -17,6 +17,8 @@ package org.springframework.boot.autoconfigure.availability; import org.springframework.boot.autoconfigure.AutoConfiguration; +import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; +import org.springframework.boot.availability.ApplicationAvailability; import org.springframework.boot.availability.ApplicationAvailabilityBean; import org.springframework.context.annotation.Bean; @@ -25,13 +27,15 @@ * {@link ApplicationAvailabilityBean}. * * @author Brian Clozel + * @author Taeik Lim * @since 2.3.0 */ @AutoConfiguration public class ApplicationAvailabilityAutoConfiguration { @Bean - public ApplicationAvailabilityBean applicationAvailability() { + @ConditionalOnMissingBean + public ApplicationAvailability applicationAvailability() { return new ApplicationAvailabilityBean(); } diff --git a/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/kubernetes/ApplicationAvailabilityAutoConfigurationTests.java b/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/availability/ApplicationAvailabilityAutoConfigurationTests.java similarity index 69% rename from spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/kubernetes/ApplicationAvailabilityAutoConfigurationTests.java rename to spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/availability/ApplicationAvailabilityAutoConfigurationTests.java index ec2aab1bed2a..225ce98f5eb4 100644 --- a/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/kubernetes/ApplicationAvailabilityAutoConfigurationTests.java +++ b/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/availability/ApplicationAvailabilityAutoConfigurationTests.java @@ -14,21 +14,22 @@ * limitations under the License. */ -package org.springframework.boot.autoconfigure.kubernetes; +package org.springframework.boot.autoconfigure.availability; import org.junit.jupiter.api.Test; import org.springframework.boot.autoconfigure.AutoConfigurations; -import org.springframework.boot.autoconfigure.availability.ApplicationAvailabilityAutoConfiguration; import org.springframework.boot.availability.ApplicationAvailability; import org.springframework.boot.test.context.runner.ApplicationContextRunner; import static org.assertj.core.api.Assertions.assertThat; +import static org.mockito.Mockito.mock; /** * Tests for {@link ApplicationAvailabilityAutoConfiguration} * * @author Brian Clozel + * @author Taeik Lim */ class ApplicationAvailabilityAutoConfigurationTests { @@ -36,8 +37,18 @@ class ApplicationAvailabilityAutoConfigurationTests { .withConfiguration(AutoConfigurations.of(ApplicationAvailabilityAutoConfiguration.class)); @Test - void providerIsPresent() { - this.contextRunner.run(((context) -> assertThat(context).hasSingleBean(ApplicationAvailability.class))); + void providerIsPresentWhenNotRegistered() { + this.contextRunner.run(((context) -> assertThat(context).hasSingleBean(ApplicationAvailability.class) + .hasBean("applicationAvailability"))); + } + + @Test + void providerIsNotConfiguredWhenCustomOneIsPresent() { + this.contextRunner + .withBean("customApplicationAvailability", ApplicationAvailability.class, + () -> mock(ApplicationAvailability.class)) + .run(((context) -> assertThat(context).hasSingleBean(ApplicationAvailability.class) + .hasBean("customApplicationAvailability"))); } }