Java Examples for org.springframework.context.annotation.ImportBeanDefinitionRegistrar

The following java examples will help you to understand the usage of org.springframework.context.annotation.ImportBeanDefinitionRegistrar. These source code samples are taken from different open source projects.

Example 1
Project: spring-integration-master  File: IntegrationComponentScanRegistrar.java View source code
@Override
public void registerBeanDefinitions(AnnotationMetadata importingClassMetadata, BeanDefinitionRegistry registry) {
    Map<String, Object> componentScan = importingClassMetadata.getAnnotationAttributes(IntegrationComponentScan.class.getName());
    Collection<String> basePackages = getBasePackages(importingClassMetadata, registry);
    if (basePackages.isEmpty()) {
        basePackages = Collections.singleton(ClassUtils.getPackageName(importingClassMetadata.getClassName()));
    }
    ClassPathScanningCandidateComponentProvider scanner = new ClassPathScanningCandidateComponentProvider(false) {

        @Override
        protected boolean isCandidateComponent(AnnotatedBeanDefinition beanDefinition) {
            return beanDefinition.getMetadata().isIndependent() && !beanDefinition.getMetadata().isAnnotation();
        }
    };
    if ((boolean) componentScan.get("useDefaultFilters")) {
        for (TypeFilter typeFilter : this.componentRegistrars.keySet()) {
            scanner.addIncludeFilter(typeFilter);
        }
    }
    for (AnnotationAttributes filter : (AnnotationAttributes[]) componentScan.get("includeFilters")) {
        for (TypeFilter typeFilter : typeFiltersFor(filter, registry)) {
            scanner.addIncludeFilter(typeFilter);
        }
    }
    for (AnnotationAttributes filter : (AnnotationAttributes[]) componentScan.get("excludeFilters")) {
        for (TypeFilter typeFilter : typeFiltersFor(filter, registry)) {
            scanner.addExcludeFilter(typeFilter);
        }
    }
    scanner.setResourceLoader(this.resourceLoader);
    for (String basePackage : basePackages) {
        Set<BeanDefinition> candidateComponents = scanner.findCandidateComponents(basePackage);
        for (BeanDefinition candidateComponent : candidateComponents) {
            if (candidateComponent instanceof AnnotatedBeanDefinition) {
                for (ImportBeanDefinitionRegistrar registrar : this.componentRegistrars.values()) {
                    registrar.registerBeanDefinitions(((AnnotatedBeanDefinition) candidateComponent).getMetadata(), registry);
                }
            }
        }
    }
}
Example 2
Project: spring-boot-master  File: ImportsContextCustomizer.java View source code
private Set<Object> determineImports(Class<?> source, AnnotationMetadata metadata) {
    if (DeterminableImports.class.isAssignableFrom(source)) {
        // We can determine the imports
        return ((DeterminableImports) instantiate(source)).determineImports(metadata);
    }
    if (ImportSelector.class.isAssignableFrom(source) || ImportBeanDefinitionRegistrar.class.isAssignableFrom(source)) {
        // use anything to determine the imports so we can't be sure
        return null;
    }
    // The source itself is the import
    return Collections.<Object>singleton(source.getName());
}