Spring Boot中Datasource配置(Spring

作者: xiaolyuh | 来源:发表于2017-06-16 14:30 被阅读4521次

    数据库连接池选择算法

    在默认情况下, 数据库连接可以使用DataSource池进行自动配置。下面是选取一个特定实现的算法:

    • 由于Tomcat数据源连接池的性能和并发, 在tomcat可用时, 我们总是优先使用它。
    • 如果HikariCP可用, 我们将使用它。
    • 如果Commons DBCP可用, 我们将使用它, 但在生产环境不推荐使用它。
    • 最后, 如果Commons DBCP2可用, 我们将使用它。

    如果你使用spring-boot-starter-jdbc或spring-boot-starter-data-jpa 'starter POMs', 你将会自动获取对tomcat-jdbc的依赖。

    注:其他的连接池可以手动配置。 如果你定义自己的DataSource bean,自动配置不会发生。

    配置一个默认的数据源

    DataSource配置通过外部配置文件的spring.datasource.*属性控制。示例中,你可能会在application.properties中声明下面的片段:

    spring.datasource.url=jdbc:mysql://localhost/test
    spring.datasource.username=dbuser
    spring.datasource.password=dbpass
    spring.datasource.driver-class-name=com.mysql.jdbc.Driver
    

    其他可选的配置可以查看DataSourceProperties。同时注意你可以通过spring.datasource.*配置任何DataSource实现相关的特定属性:具体参考你使用的连接池实现的文档。

    注:既然Spring Boot能够从大多数数据库的url上推断出driver-class-name,那么你就不需要再指定它了。 对于一个将要创建的DataSource连接池,我们需要能够验证Driver是否可用, 所以我们会在做任何事情之前检查它。 比如, 如果你设置spring.datasource.driverClassName=com.mysql.jdbc.Driver,然后这个类就会被加载。

    配置dbcp2数据源

    # 数据源配置
    spring.datasource.url=jdbc:mysql://localhost:3306/ssb_test
    spring.datasource.driver-class-name=com.mysql.jdbc.Driver
    spring.datasource.username=root
    spring.datasource.password=root
    #连接池配置
    spring.datasource.type=org.apache.commons.dbcp2.BasicDataSource
    spring.datasource.dbcp2.max-wait-millis=10000
    spring.datasource.dbcp2.min-idle=5
    spring.datasource.dbcp2.initial-size=5
    spring.datasource.dbcp2.validation-query=SELECT x
    spring.datasource.dbcp2.connection-properties=characterEncoding=utf8
    

    spring.datasource.type=org.apache.commons.dbcp2.BasicDataSource:指定使用那个连接池,默认使用tomcate-jdbc连接池。

    dbcp2配置详解http://blog.csdn.net/xiaolyuh123/article/details/73331093

    测试数据源代码

    package com.xiaolyuh;
    
    import net.minidev.json.JSONObject;
    import org.junit.Before;
    import org.junit.Test;
    import org.junit.runner.RunWith;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.boot.autoconfigure.jdbc.DataSourceProperties;
    import org.springframework.boot.test.context.SpringBootTest;
    import org.springframework.context.ApplicationContext;
    import org.springframework.http.MediaType;
    import org.springframework.test.context.junit4.SpringRunner;
    import org.springframework.test.web.servlet.MockMvc;
    import org.springframework.test.web.servlet.MvcResult;
    import org.springframework.test.web.servlet.setup.MockMvcBuilders;
    import org.springframework.web.context.WebApplicationContext;
    
    import javax.sql.DataSource;
    import java.util.HashMap;
    import java.util.Map;
    
    import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post;
    import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.content;
    import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
    
    @RunWith(SpringRunner.class)
    @SpringBootTest
    public class DataSourceTests {
    
        @Autowired
        ApplicationContext applicationContext;
    
        @Autowired
        DataSourceProperties dataSourceProperties;
    
        @Test
        public void testDataSource() throws Exception {
            // 获取配置的数据源
            DataSource dataSource = applicationContext.getBean(DataSource.class);
            // 查看配置数据源信息
            System.out.println(dataSource);
            System.out.println(dataSource.getClass().getName());
            System.out.println(dataSourceProperties);
        }
    
    }
    

    源码

    https://github.com/wyh-spring-ecosystem-student/spring-boot-student/tree/releases

    spring-boot-student-data-jpa工程

    扫码有红包哦

    相关文章

      网友评论

        本文标题:Spring Boot中Datasource配置(Spring

        本文链接:https://www.haomeiwen.com/subject/mbfmqxtx.html