Example usage for org.springframework.data.repository.config RepositoryConfigurationExtension registerBeansForRoot

List of usage examples for org.springframework.data.repository.config RepositoryConfigurationExtension registerBeansForRoot

Introduction

In this page you can find the example usage for org.springframework.data.repository.config RepositoryConfigurationExtension registerBeansForRoot.

Prototype

void registerBeansForRoot(BeanDefinitionRegistry registry, RepositoryConfigurationSource configurationSource);

Source Link

Document

Callback to register additional bean definitions for a repositories root node.

Usage

From source file:org.agilemicroservices.autoconfigure.orm.RepositoryConfigurationDelegate.java

/**
 * Registers the found repositories in the given {@link BeanDefinitionRegistry}.
 *
 * @param registry//from w w w. ja  v a 2 s .  c o m
 * @param extension
 * @return {@link BeanComponentDefinition}s for all repository bean definitions found.
 */
public List<BeanComponentDefinition> registerRepositoriesIn(BeanDefinitionRegistry registry,
        RepositoryConfigurationExtension extension) {

    extension.registerBeansForRoot(registry, configurationSource);

    RepositoryBeanDefinitionBuilder builder = new RepositoryBeanDefinitionBuilder(registry, extension,
            resourceLoader, environment);
    List<BeanComponentDefinition> definitions = new ArrayList<BeanComponentDefinition>();

    for (RepositoryConfiguration<? extends RepositoryConfigurationSource> configuration : extension
            .getRepositoryConfigurations(configurationSource, resourceLoader, inMultiStoreMode)) {

        BeanDefinitionBuilder definitionBuilder = builder.build(configuration);

        extension.postProcess(definitionBuilder, configurationSource);

        AbstractBeanDefinition beanDefinition = definitionBuilder.getBeanDefinition();
        String beanName = beanNameGenerator.generateBeanName(beanDefinition, registry);

        if (LOGGER.isDebugEnabled()) {
            LOGGER.debug(REPOSITORY_REGISTRATION, extension.getModuleName(), beanName,
                    configuration.getRepositoryInterface(), extension.getRepositoryFactoryClassName());
        }

        registry.registerBeanDefinition(beanName, beanDefinition);
        definitions.add(new BeanComponentDefinition(beanDefinition, beanName));
    }

    return definitions;
}

From source file:org.springframework.boot.autoconfigure.data.AbstractRepositoryConfigurationSourceSupport.java

@Override
public void registerBeanDefinitions(AnnotationMetadata importingClassMetadata,
        final BeanDefinitionRegistry registry) {

    ResourceLoader resourceLoader = new DefaultResourceLoader();
    AnnotationRepositoryConfigurationSource configurationSource = getConfigurationSource();
    RepositoryConfigurationExtension extension = getRepositoryConfigurationExtension();
    extension.registerBeansForRoot(registry, configurationSource);

    RepositoryBeanNameGenerator generator = new RepositoryBeanNameGenerator();
    generator.setBeanClassLoader(this.beanClassLoader);

    Collection<RepositoryConfiguration<AnnotationRepositoryConfigurationSource>> repositoryConfigurations = extension
            .getRepositoryConfigurations(configurationSource, resourceLoader);

    for (RepositoryConfiguration<AnnotationRepositoryConfigurationSource> repositoryConfiguration : repositoryConfigurations) {
        RepositoryBeanDefinitionBuilder builder = new RepositoryBeanDefinitionBuilder(repositoryConfiguration,
                extension);//  w  w w  .ja v  a2s .  co  m
        BeanDefinitionBuilder definitionBuilder = builder.build(registry, resourceLoader);
        extension.postProcess(definitionBuilder, configurationSource);

        String beanName = generator.generateBeanName(definitionBuilder.getBeanDefinition(), registry);
        registry.registerBeanDefinition(beanName, definitionBuilder.getBeanDefinition());
    }
}