Polish "Back off if a custom ApplicationAvailability bean is present"

See gh-34347
This commit is contained in:
Stephane Nicoll
2023-04-19 17:25:10 +02:00
parent 5e95ba8448
commit 1b832d82f8
2 changed files with 6 additions and 32 deletions

View File

@@ -34,7 +34,7 @@ import org.springframework.context.annotation.Bean;
public class ApplicationAvailabilityAutoConfiguration {
@Bean
@ConditionalOnMissingBean(ApplicationAvailability.class)
@ConditionalOnMissingBean
public ApplicationAvailability applicationAvailability() {
return new ApplicationAvailabilityBean();
}

View File

@@ -20,13 +20,10 @@ import org.junit.jupiter.api.Test;
import org.springframework.boot.autoconfigure.AutoConfigurations;
import org.springframework.boot.availability.ApplicationAvailability;
import org.springframework.boot.availability.AvailabilityChangeEvent;
import org.springframework.boot.availability.AvailabilityState;
import org.springframework.boot.test.context.runner.ApplicationContextRunner;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import static org.assertj.core.api.Assertions.assertThat;
import static org.mockito.Mockito.mock;
/**
* Tests for {@link ApplicationAvailabilityAutoConfiguration}
@@ -46,35 +43,12 @@ class ApplicationAvailabilityAutoConfigurationTests {
}
@Test
void providerIsPresentWithRegisteredOne() {
this.contextRunner.withUserConfiguration(ApplicationAvailabilityConfig.class)
void providerIsNotConfiguredWhenCustomOneIsPresent() {
this.contextRunner
.withBean("customApplicationAvailability", ApplicationAvailability.class,
() -> mock(ApplicationAvailability.class))
.run(((context) -> assertThat(context).hasSingleBean(ApplicationAvailability.class)
.hasBean("customApplicationAvailability")));
}
@Configuration(proxyBeanMethods = false)
static class ApplicationAvailabilityConfig {
@Bean
ApplicationAvailability customApplicationAvailability() {
return new ApplicationAvailability() {
@Override
public <S extends AvailabilityState> S getState(Class<S> stateType, S defaultState) {
return null;
}
@Override
public <S extends AvailabilityState> S getState(Class<S> stateType) {
return null;
}
@Override
public <S extends AvailabilityState> AvailabilityChangeEvent<S> getLastChangeEvent(Class<S> stateType) {
return null;
}
};
}
}
}