Spring Boot 简单配置自定义数据源 DataSource

扫码关注公众号:Java 技术驿站

发送:vip
将链接复制到本浏览器,永久解锁本站全部文章

【公众号:Java 技术驿站】 【加作者微信交流技术,拉技术群】

Spring Boot 已经实现了自动加载 DataSource 的相关配置。我们只需要在项目中引用相关依赖,在配置文件 application.yaml 中配置相关属性即可。相关相关源码入口为 org.springframework.boot.autoconfigure.jdbc 包下的 DataSourceAutoConfiguration 配置类。

(一) Spring Boot 启动会调用 DataSourceAutoConfiguration 。部分源码如下:

    @Configuration
    @ConditionalOnClass({ DataSource.class, EmbeddedDatabaseType.class })
    @EnableConfigurationProperties(DataSourceProperties.class)
    @Import({ Registrar.class, DataSourcePoolMetadataProvidersConfiguration.class })
    public class DataSourceAutoConfiguration {

        private static final Log logger = LogFactory
                .getLog(DataSourceAutoConfiguration.class);

        @Bean
        @ConditionalOnMissingBean
        public DataSourceInitializer dataSourceInitializer(DataSourceProperties properties,
                ApplicationContext applicationContext) {
            return new DataSourceInitializer(properties, applicationContext);
        }

        /**
         * Determines if the {@code dataSource} being used by Spring was created from
         * {@link EmbeddedDataSourceConfiguration}.
         * @param beanFactory the bean factory
         * @return true if the data source was auto-configured.
         */
        public static boolean containsAutoConfiguredDataSource(
                ConfigurableListableBeanFactory beanFactory) {
            try {
                BeanDefinition beanDefinition = beanFactory.getBeanDefinition("dataSource");
                return EmbeddedDataSourceConfiguration.class.getName()
                        .equals(beanDefinition.getFactoryBeanName());
            }
            catch (NoSuchBeanDefinitionException ex) {
                return false;
            }
        }
        
        .......

    }

但是有些公司要求,数据库的相关配置,尤其是密码,不能明文放在配置文件中,需要调用公司相关平台提供的接口来获取数据库加密后的密码进行配置,本文即是讲解如何通过自定义 DataSourceAutoConfiguration 配置数据源 DataSource

(二) 项目中常使用的 DataSource 为阿里的 druid 。相关参考 https://github.com/alibaba/druid

项目中新建配置类 DataSourceProperties,代码如下:

    @Configuration
    @EnableConfigurationProperties(DataSourceProperties.class)
    public class DataSourceAutoConfiguration {

        @Resource DataSourceProperties properties;

        @Bean
        public DataSource dataSource() {
            //可以在此处调用相关接口获取数据库的配置信息进行 DataSource 的配置
            DruidDataSource dataSource = new DruidDataSource();
            dataSource.setUrl(properties.getUrl());
            dataSource.setUsername(properties.getUsername());
            dataSource.setPassword(properties.getPassword());
            dataSource.setDriverClassName(properties.getDriverClassName());
            return dataSource;
        }

    }

写好配置类后,还有一步很关键

(三) 创建 spring.factories

在 resources 下面创建 META-INF/spring.factories , 然后在文件中把第 (二) 步的类配置进去,内容如下:

    org.springframework.boot.autoconfigure.EnableAutoConfiguration=com.sinosoft.configurer.database.DataSourceAutoConfiguration

来源:http://ddrv.cn

赞(0) 打赏
版权归原创作者所有,任何形式的转载请联系博主:daming_90:Java 技术驿站 » Spring Boot 简单配置自定义数据源 DataSource

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏