processImports(configClass, sourceClass, getImports(sourceClass), filter, true);
先看下org.springframework.context.annotation.ConfigurationClassParser#getImports方法。
private Set<SourceClass> getImports(SourceClass sourceClass) throws IOException {
Set<SourceClass> imports = new LinkedHashSet<>();
Set<SourceClass> visited = new LinkedHashSet<>();
collectImports(sourceClass, imports, visited);
return imports;
}
private void collectImports(SourceClass sourceClass, Set<SourceClass> imports, Set<SourceClass> visited)
throws IOException {
if (visited.add(sourceClass)) {
// 遍历配置类的注解,如果没有Import注解,进深入注解中,再次找。
for (SourceClass annotation : sourceClass.getAnnotations()) {
String annName = annotation.getMetadata