Anastasiia Smirnova opened SPR-17153 and commented
I've found this issue while using Spring boot and files a ticket to Spring Boot:
spring-projects/spring-boot#14018
Currently we are facing a complex issue with autoconfigurations that are marked with @EnableScheduling. I have created sample project that reproduces an issue.
It consists of 4 modules:
- library-0 module
This module defines Library0AutoConfiguration that has @EnableScheduling and @AutoConfigureBefore(name = "org.library1.Library1AutoConfiguration"). It will not start because of unsatisfied @ConditionalOnBean (bean is not present in context).
- library-1 module
This module defines Library1AutoConfiguration that has @AutoConfigureBefore(name = "org.library2.Library2AutoConfiguration").
- library-2 module
This module defines Library2AutoConfiguration that has @EnableScheduling and @Conditional on bean of type Library1.class.
- service module
This module imports: library-0, library-1 and library-2 and enables autoconfiguration.
There is test ServiceConfigurationTest that can be run to reproduce an issue:
@SpringBootTest(
webEnvironment = SpringBootTest.WebEnvironment.NONE,
classes = ServiceConfiguration.class
)
@RunWith(SpringRunner.class)
public class ServiceConfigurationTest { @Autowired
Library1 library1;
@Autowired
Library2 library2; @Test
public void beans_should_be_present() throws Exception {
assertNotNull(library1);
assertNotNull(library2);
}
}
Actual result: both Library1AutoConfiguration and Library2AutoConfiguration should start, because they do not have dependency on Library0AutoConfiguration, but instead Library2AutoConfiguration will not start and test will fail.Removing @EnableScheduling from Library0AutoConfiguration fixes an issue.
We have found that TrackedConditionEvaluator.shouldSkip for org.springframework.scheduling.annotation.SchedulingConfiguration skips loading bean definitions for Library2AutoConfiguration.
Spring Boot version 1.5.13
Spring 4.3.17
Issue Links:
Anastasiia Smirnova opened SPR-17153 and commented
I've found this issue while using Spring boot and files a ticket to Spring Boot:
spring-projects/spring-boot#14018
Currently we are facing a complex issue with autoconfigurations that are marked with
@EnableScheduling. I have created sample project that reproduces an issue.It consists of 4 modules:
This module defines
Library0AutoConfigurationthat has@EnableSchedulingand@AutoConfigureBefore(name = "org.library1.Library1AutoConfiguration"). It will not start because of unsatisfied@ConditionalOnBean(bean is not present in context).This module defines
Library1AutoConfigurationthat has@AutoConfigureBefore(name = "org.library2.Library2AutoConfiguration").This module defines
Library2AutoConfigurationthat has@EnableSchedulingand@Conditionalon bean of typeLibrary1.class.This module imports:
library-0,library-1andlibrary-2and enables autoconfiguration.There is test
ServiceConfigurationTestthat can be run to reproduce an issue:Actual result: both
Library1AutoConfigurationandLibrary2AutoConfigurationshould start, because they do not have dependency onLibrary0AutoConfiguration, but insteadLibrary2AutoConfigurationwill not start and test will fail.Removing@EnableSchedulingfromLibrary0AutoConfigurationfixes an issue.We have found that
TrackedConditionEvaluator.shouldSkipfororg.springframework.scheduling.annotation.SchedulingConfigurationskips loading bean definitions forLibrary2AutoConfiguration.Spring Boot version 1.5.13
Spring 4.3.17
Issue Links: