Search in sources :

Example 1 with EnvironmentRepositoryProperties

use of org.springframework.cloud.config.server.support.EnvironmentRepositoryProperties in project spring-cloud-config by spring-cloud.

the class CompositeEnvironmentBeanFactoryPostProcessor method postProcessBeanFactory.

@Override
public void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory) throws BeansException {
    List<String> typePropertyList = CompositeUtils.getCompositeTypeList(environment);
    for (int i = 0; i < typePropertyList.size(); i++) {
        String type = typePropertyList.get(i);
        String factoryName = CompositeUtils.getFactoryName(type, beanFactory);
        Type[] factoryTypes = CompositeUtils.getEnvironmentRepositoryFactoryTypeParams(beanFactory, factoryName);
        Class<? extends EnvironmentRepositoryProperties> propertiesClass = (Class<? extends EnvironmentRepositoryProperties>) factoryTypes[1];
        EnvironmentRepositoryProperties properties = bindProperties(i, propertiesClass, environment);
        AbstractBeanDefinition beanDefinition = BeanDefinitionBuilder.genericBeanDefinition(EnvironmentRepository.class).setFactoryMethodOnBean("build", factoryName).addConstructorArgValue(properties).getBeanDefinition();
        String beanName = String.format("%s-env-repo%d", type, i);
        BeanDefinitionRegistry registry = (BeanDefinitionRegistry) beanFactory;
        registry.registerBeanDefinition(beanName, beanDefinition);
    }
}
Also used : EnvironmentRepository(org.springframework.cloud.config.server.environment.EnvironmentRepository) Type(java.lang.reflect.Type) AbstractBeanDefinition(org.springframework.beans.factory.support.AbstractBeanDefinition) EnvironmentRepositoryProperties(org.springframework.cloud.config.server.support.EnvironmentRepositoryProperties) BeanDefinitionRegistry(org.springframework.beans.factory.support.BeanDefinitionRegistry)

Aggregations

Type (java.lang.reflect.Type)1 AbstractBeanDefinition (org.springframework.beans.factory.support.AbstractBeanDefinition)1 BeanDefinitionRegistry (org.springframework.beans.factory.support.BeanDefinitionRegistry)1 EnvironmentRepository (org.springframework.cloud.config.server.environment.EnvironmentRepository)1 EnvironmentRepositoryProperties (org.springframework.cloud.config.server.support.EnvironmentRepositoryProperties)1