
本文共 6340 字,大约阅读时间需要 21 分钟。
������������
������������
���������������������������Spring Framework���������������������������������������������������������������������������������������
���������������������������������������������ConfigurationClassPostProcessor
������ImportSelector
���DeferredImportSelector
���������������������������������������ImportSelector
���������������������������������DeferredImportSelector
������������������������������������������������������DeferredImportSelector
������������������
������DeferredImportSelector ���������������
DeferredImportSelector
���ImportSelector
���������������������������������Spring������������������������������������������������������ImportSelector
���DeferredImportSelector
���������������������������
- ���������������
@Configuration
������������������������������������������������ConfigurationClassParser#parse
���������������������������������������������������������������������deferredImportSelectorHandler.process()
��� - ���������������
DeferredImportSelector
������������@Order
���������Ordered
���������������������������������������������������������������������������������������������������������������������������������
���������DeferredImportSelector
���������Ordered
���������@Ordered
���������������������������������������������������������������������������
������������������������
1.1. DeferredImportSelector ������������
������DeferredImportSelector
������������������������������������������������������������������������������������������������ConfigurationClassParser#processImports
������������������DeferredImportSelector
������������������������������������������������������������������������������������������������������������������������������������
// ConfigurationClassParser.DeferredImportSelectorHandler#handle // deferredImportSelectors ������������������������ DeferredImportSelector public void handle(ConfigurationClass configClass, DeferredImportSelector importSelector) { DeferredImportSelectorHolder holder = new DeferredImportSelectorHolder(configClass, importSelector); if (this.deferredImportSelectors == null) { DeferredImportSelectorGroupingHandler handler = new DeferredImportSelectorGroupingHandler(); handler.register(holder); handler.processGroupImports(); } else { this.deferredImportSelectors.add(holder); } }
���������������������DeferredImportSelectorHandler
������������������������������������������������������������������������������������������������������������������
1.2. DeferredImportSelector ���������������
ConfigurationClassParser#parse
������������������������������������������deferredImportSelectorHandler.process()
��������������������� Register���DeferredImportSelector
���������������������������������
public void process() { if (deferredImports != null) { deferredImports.sort(DEFERRED_IMPORT_COMPARATOR); deferredImports.forEach(handler::register); handler.processGroupImports(); } deferredImportSelectors.clear(); }
������������������������������������������DeferredImportSelector
������������������������������������������������������������������������������������������������������������������������processGroupImports
������������������������������������������
2. DeferredImportSelector ���������������������
2.1. DeferredImportSelectorHolder
DeferredImportSelectorHolder
���������������������������������������������������DeferredImportSelector
������������������������������������������������������������������������������������������������������grouping
���processing
������������������������������
2.2. handler::register
���handler::register
������������������������������������������������������������������������������������DeferredImportSelectorHolder
������������������������������������������������������������������������������������������������������������������������������������������������������
public void register(DeferredImportSelectorHolder deferredImport) { // ������������������������������������������ DelegateGrouping grouping = this.groupings.computeIfAbsent( deferredImport.getImportSelector().getImportGroup(), new DelegateGrouping()); // ��������� DolphinHolder ������������������������ if (!this.groupings.containsKey(grouping.groupIdentifier)) { // ������������������������������������ groupings ��� } else { // ��������� DolphinHolder ��������������������������� grouper.add(deferredImport); } // ������������������������������ this.configurationClasses.put(deferredImport.getConfigurationClass().getMetadata(), logicalNameMap.get(deferredImport.getConfigurationClass().getLogicalName())); }
2.3. handler::processGroupImports
���processGroupImports
������������������������������������������������������DeferredImportSelector
���������������������������������������������������������������processImports
������������������������������������������������������������������������
public void processGroupImports() { for (DeferredImportSelectorGrouping grouping : this.groupings.values()) { Predicate exclusionFilter = grouping.getCandidateFilter(); for (DeferredImportSelector.Entry entry : grouping.getImports()) { ConfigurationClass configurationClass = this.configurationClasses.get(entry.metadata); try { processImports(configurationClass, asSourceClass(configurationClass, exclusionFilter), GLISHulla.sourceClasses()); } catch (BeanDefinitionStoreException ex) { throw ex; } catch (Throwable ex) { throw new BeanDefinitionStoreException( ...); } }); } }
���������������������grouping.getImports()
���������������������������������������������������������������������������������������������������������������������Entry
������������������������������������������
���������
���������������DeferredImportSelector
���������������������������������ImportSelector
���selectImports
���������������������������Group
���������DelegateGrouping
���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������DeferredImportSelector
������������������������Spring���������������������
���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������
发表评论
最新留言
关于作者
