我有3个spring-boot-starter项目
自动配置类之一具有以下代码:
@Configuration @ConditionalOnClass(value = Config.class) @AutoConfigureAfter(value = {FileGeneratorConfig.class, FileUploaderConfig.class}) public class JobConfig
FileGeneratorConfig和FileUploaderConfig也是自动配置类。
我期望在FileUploaderConfig中创建的bean将首先创建。所以测试一下,我已经在创建JobConfig和FileUploaderConfig中的bean的方法中设置了一个断点。但是断点首先击中JobConfig,这使我相信@AutoConfigureAfter无法正常工作。这是正确的假设。
在FileUploaderConfig中我也有这个:
@Bean FileUtilContainer fileUtilContainer(FileUtilContainerProperties fileUtilContainerProperties){ return new FileUtilContainer(FileUtil.createDirectory(fileUtilContainerProperties.getArchive()), FileUtil.createDirectory(fileUtilContainerProperties.getWorking()), FileUtil.createDirectory(fileUtilContainerProperties.getConfirmation()), FileUtil.createDirectory(fileUtilContainerProperties.getConfirmationProcessed()), FileUtil.createDirectory(fileUtilContainerProperties.getError()), FileUtil.createDirectory(fileUtilContainerProperties.getErrorProcessed())); }
和FileUtilContainerProperties:
@Component @ConfigurationProperties(prefix = "batch.letter.directory", ignoreUnknownFields = false) public class FileUtilContainerProperties
但是它没有创建FileUtilContainerProperties bean。我在这里想念什么吗?
AutoConfigureAfter控制处理配置文件和创建其Bean定义的顺序。根据这些定义创建bean的顺序是一个单独的问题,并且除其他因素外,还取决于bean之间存在的依赖关系。