-
Couldn't load subscription status.
- Fork 38.8k
Closed as not planned
Closed as not planned
Copy link
Labels
in: coreIssues in core modules (aop, beans, core, context, expression)Issues in core modules (aop, beans, core, context, expression)status: invalidAn issue that we don't feel is validAn issue that we don't feel is valid
Description
Here's a test that illustrates the problem:
class ConditionInheritanceTests {
@Test
void test() {
try (AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext()) {
context.register(Importer.class);
context.refresh();
assertThatExceptionOfType(NoSuchBeanDefinitionException.class)
.isThrownBy(() -> context.getBean(DirectlyAnnotatedConfiguration.class));
assertThatExceptionOfType(NoSuchBeanDefinitionException.class)
.isThrownBy(() -> context.getBean(OnlySuperClassAnnotatedConfiguration.class));
}
}
@Import({ DirectlyAnnotatedConfiguration.class, OnlySuperClassAnnotatedConfiguration.class })
static class Importer {
}
@Configuration
@Conditional(TestCondition.class)
static class BaseConfiguration {
}
@Conditional(TestCondition.class)
static class DirectlyAnnotatedConfiguration extends BaseConfiguration {
}
static class OnlySuperClassAnnotatedConfiguration extends BaseConfiguration {
}
static class TestCondition implements Condition {
@Override
public boolean matches(ConditionContext context, AnnotatedTypeMetadata metadata) {
return false;
}
}
}My expectation is that neither DirectlyAnnotatedConfiguration nor OnlySuperClassAnnotatedConfiguration will be registered in the context. The actual behavior is that OnlySuperClassAnnotatedConfiguration is registered so the second assertion in the test fails.
Metadata
Metadata
Assignees
Labels
in: coreIssues in core modules (aop, beans, core, context, expression)Issues in core modules (aop, beans, core, context, expression)status: invalidAn issue that we don't feel is validAn issue that we don't feel is valid