@startuml
start
:Spring 容器发布刷新事件;
:Dubbo 接收到刷新事件;
-> onApplicationEvent(event);
partition 检查配置 {
    if (export) then (no)
        stop
    endif

    if (delay>0) then (yes)
        :延迟暴露;
        detach
    endif;
    :检测 <dubbo:service> 标签的 interface 属性合法性，不合法则抛出异常;
    :检测 ProviderConfig、ApplicationConfig 等核心配置类对象是否为空，\n若为空，则尝试从其他配置类对象中获取相应的实例;
    :检测并处理泛化服务和普通服务类;
    :检测本地存根配置，并进行相应的处理;
    :对 ApplicationConfig、RegistryConfig 等配置类进行检测，为空则尝试创建，\n若无法创建则抛出异常;
}


partition 组装URL {
    :doExportUrls();

}


:Dubbo 执行导出逻辑;







stop






@enduml