1. 程式人生 > >012 數據訪問---數據源的配置

012 數據訪問---數據源的配置

cti 默認 bean contex ica framework local 數據訪問 host

一 .概述

  在springboot之中,我們如果想要引入數據訪問的操作,這個過程非常的簡單.

  首先,我們需要引入對應的啟動器.

  如下:

<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>

我們配置一下數據源:

  我們找到我們的application.yml文件,進行如下的配置:

  datasource:
    url: jdbc:mysql://localhost:3306/mp
    username: root
    password: trek
    driver-class-name: com.mysql.jdbc.Driver

現在我們進行一下測試,看我們的數據源是否已經配置成功.

@RunWith(SpringRunner.class)
@SpringBootTest(classes=SpringbootApplicationStarter.class)
@Slf4j
public class JDBCTest {
    
    @Resource
    
private DataSource datasource; @Test public void testGetConnection() throws Exception { log.info(datasource.getClass().toString()); log.info(datasource.getConnection().toString()); } }

我們看下日誌的輸出:

2018-08-18 20:25:02.243  INFO 5204 --- [           main] com.trek.test.JDBCTest                   : class org.apache.tomcat.jdbc.pool.DataSource
2018-08-18 20:25:03.080 INFO 5204 --- [ main] com.trek.test.JDBCTest : ProxyConnection[PooledConnection[com.mysql.jdbc.JDBC4Connection@2ef0dd86]]

我們發現,springboot默認使用的就是Tomcat之中的數據源.


二 . 數據源配置的分析

  按照之前我們的做法,springboot既然已經提供了默認的配置方式,那麽一定會有一個配置類的存在.

我們找到對應的配置類,發現了如下的代碼:  

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

我們看一下DataSourceProperties 到底是什麽?

技術分享圖片

當我們看到配置的註解就明白了,在springboot啟動的時候,就會對這個配置類進行配置,這樣數據源的信息就被配置好了.

那麽,我們現在需要找的就是Tomcat的數據源是在哪裏被加載的.

技術分享圖片

在上面的代碼之中,我們發現了Tomcat的數據源是怎麽被配置成功的了.


四 .自定義數據源  

    /**
     * Generic DataSource configuration.
     */
    @ConditionalOnMissingBean(DataSource.class)
    @ConditionalOnProperty(name = "spring.datasource.type")
    static class Generic {

        @Bean
        public DataSource dataSource(DataSourceProperties properties) {
            return properties.initializeDataSourceBuilder().build();
        }

    }

我們在代碼之中,在最下面發現啊了一個通用的配置信息. 我們就可以使用這種方式進行Druid數據源的配置了.在下一節我們就利用這個特性進行數據源的配置.

012 數據訪問---數據源的配置