Spring JPA加载Reposiotry BeanDefinition过程

87 阅读1分钟

org.springframework.data.repository.config.RepositoryConfigurationSourceSupport#getCandidates

public Collection<BeanDefinition> getCandidates(ResourceLoader loader) {

   RepositoryComponentProvider scanner = new RepositoryComponentProvider(getIncludeFilters());
   scanner.setConsiderNestedRepositoryInterfaces(shouldConsiderNestedRepositories());
   scanner.setResourceLoader(loader);
   scanner.setEnvironment(environment);

   for (TypeFilter filter : getExcludeFilters()) {
      scanner.addExcludeFilter(filter);
   }

   Set<BeanDefinition> result = new HashSet<BeanDefinition>();

   for (String basePackage : getBasePackages()) {
      Set<BeanDefinition> candidate = scanner.findCandidateComponents(basePackage);
      result.addAll(candidate);
   }

   return result;
}

org.springframework.boot.autoconfigure.data.AbstractRepositoryConfigurationSourceSupport#getBasePackages

protected Iterable<String> getBasePackages() {
   return AutoConfigurationPackages.get(this.beanFactory);
}

org.springframework.boot.autoconfigure.AutoConfigurationPackages.BasePackages#packages

static final class BasePackages {

   private final List<String> packages;

   private boolean loggedBasePackageInfo;