All Downloads are FREE. Search and download functionalities are using the official Maven repository.

cn.hiboot.mcn.autoconfigure.jdbc.OnMultipleDataSource Maven / Gradle / Ivy

package cn.hiboot.mcn.autoconfigure.jdbc;

import cn.hiboot.mcn.autoconfigure.config.ConfigProperties;
import org.springframework.beans.factory.config.BeanDefinition;
import org.springframework.beans.factory.support.BeanDefinitionBuilder;
import org.springframework.boot.autoconfigure.jdbc.DataSourceProperties;
import org.springframework.boot.context.properties.bind.Bindable;
import org.springframework.boot.context.properties.bind.Binder;
import org.springframework.context.annotation.ConditionContext;
import org.springframework.context.annotation.ConfigurationCondition;
import org.springframework.core.env.Environment;
import org.springframework.core.type.AnnotatedTypeMetadata;

import java.util.Map;

/**
 * OnMultipleDataSource
 *
 * @author DingHao
 * @since 2022/7/28 17:32
 */
class OnMultipleDataSource implements ConfigurationCondition {

    @Override
    public boolean matches(ConditionContext context, AnnotatedTypeMetadata metadata) {
        Environment environment = context.getEnvironment();
        Map properties = Binder.get(environment).bind(ConfigProperties.MULTIPLE_DATASOURCE_PREFIX, Bindable.mapOf(String.class, DataSourceProperties.class)).orElse(null);
        if(properties == null){
            return false;
        }
        context.getRegistry().registerBeanDefinition(MultipleDataSourceConfig.class.getName(),
                BeanDefinitionBuilder.genericBeanDefinition(MultipleDataSourceConfig.class,() -> new MultipleDataSourceConfig(properties, environment)).setRole(BeanDefinition.ROLE_INFRASTRUCTURE).getBeanDefinition());
        return true;
    }

    @Override
    public ConfigurationPhase getConfigurationPhase() {
        return ConfigurationPhase.PARSE_CONFIGURATION;
    }

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy