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

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

Introduction

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

Prototype

void postProcess(BeanDefinitionBuilder builder, XmlRepositoryConfigurationSource config);

Source Link

Document

Callback to post process the BeanDefinition built from XML and tweak the configuration if necessary.

Usage

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

/**
 * Registers the found repositories in the given {@link BeanDefinitionRegistry}.
 *
 * @param registry/*from   w  ww .  ja  va2  s .  co  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);//from  ww w . jav  a 2  s  .c  o  m
        BeanDefinitionBuilder definitionBuilder = builder.build(registry, resourceLoader);
        extension.postProcess(definitionBuilder, configurationSource);

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