Home / Class/ BeanDefinitionOverrideFailureAnalyzerTests Class — spring-boot Architecture

BeanDefinitionOverrideFailureAnalyzerTests Class — spring-boot Architecture

Architecture documentation for the BeanDefinitionOverrideFailureAnalyzerTests class in BeanDefinitionOverrideFailureAnalyzerTests.java from the spring-boot codebase.

Entity Profile

Relationship Graph

Source Code

core/spring-boot/src/test/java/org/springframework/boot/diagnostics/analyzer/BeanDefinitionOverrideFailureAnalyzerTests.java lines 39–132

class BeanDefinitionOverrideFailureAnalyzerTests {

	@Test
	void analyzeBeanDefinitionOverrideException() {
		FailureAnalysis analysis = performAnalysis(BeanOverrideConfiguration.class);
		assertThat(analysis).isNotNull();
		String description = analysis.getDescription();
		assertThat(description).contains("The bean 'testBean', defined in " + SecondConfiguration.class.getName()
				+ ", could not be registered.");
		assertThat(description).contains(FirstConfiguration.class.getName());
	}

	@Test
	void analyzeBeanDefinitionOverrideExceptionWithDefinitionsWithNoResourceDescription() {
		FailureAnalysis analysis = performAnalysis((context) -> {
			context.registerBean("testBean", String.class, (Supplier<String>) String::new);
			context.registerBean("testBean", String.class, (Supplier<String>) String::new);
		});
		assertThat(analysis).isNotNull();
		String description = analysis.getDescription();
		assertThat(description)
			.isEqualTo("The bean 'testBean' could not be registered. A bean with that name has already"
					+ " been defined and overriding is disabled.");
	}

	private @Nullable FailureAnalysis performAnalysis(Class<?> configuration) {
		BeanDefinitionOverrideException failure = createFailure(configuration);
		assertThat(failure).isNotNull();
		return new BeanDefinitionOverrideFailureAnalyzer().analyze(failure);
	}

	private @Nullable BeanDefinitionOverrideException createFailure(Class<?> configuration) {
		try {
			AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext();
			context.setAllowBeanDefinitionOverriding(false);
			context.register(configuration);
			context.refresh();
			context.close();
			return null;
		}
		catch (BeanDefinitionOverrideException ex) {
			return ex;
		}
	}

	private @Nullable FailureAnalysis performAnalysis(
			ApplicationContextInitializer<AnnotationConfigApplicationContext> initializer) {
		BeanDefinitionOverrideException failure = createFailure(initializer);
		assertThat(failure).isNotNull();
		return new BeanDefinitionOverrideFailureAnalyzer().analyze(failure);
	}

	private @Nullable BeanDefinitionOverrideException createFailure(
			ApplicationContextInitializer<AnnotationConfigApplicationContext> initializer) {
		try {
			AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext();
			context.setAllowBeanDefinitionOverriding(false);
			initializer.initialize(context);
			context.refresh();
			context.close();
			return null;
		}
		catch (BeanDefinitionOverrideException ex) {
			return ex;
		}
	}

	@Configuration(proxyBeanMethods = false)
	@Import({ FirstConfiguration.class, SecondConfiguration.class })
	static class BeanOverrideConfiguration {

	}

	@Configuration(proxyBeanMethods = false)
	static class FirstConfiguration {

		@Bean
		String testBean() {
			return "test";
		}

	}

	@Configuration(proxyBeanMethods = false)
	static class SecondConfiguration {

		@Bean
		String testBean() {
			return "test";
		}

	}

}

Domain

Analyze Your Own Codebase

Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.

Try Supermodel Free