美文网首页
说说在 Spring Boot 中如何配置数据源

说说在 Spring Boot 中如何配置数据源

作者: deniro | 来源:发表于2020-10-28 20:06 被阅读0次

    假设我们需要使用 Oracle 数据库,那么首先需要在 pom.xml 中引用 Oracle 数据库驱动包:

    <properties>
           <oracle.version>12.2.0.1</oracle.version>
           ...
    </properties>
    
    <dependency>
        <groupId>com.oracle</groupId>
        <artifactId>ojdbc8</artifactId>
        <version>${oracle.version}</version>
    </dependency>
    
    

    1 直接配置

    在 application.yml 中配置数据源参数,形如:

    spring:  
    datasource:
            url: jdbc:oracle:thin:@192.168.4.15:1599:orcl
            username: deniro
            password: 2020
    

    可以不用显式指定驱动类名,因为Spring Boot 会自动根据数据库 URL 地址推算出来。当然也可以显式指定:
    driver-class-name: oracle.jdbc.OracleDriver

    如果在类路径中存在 Tomcat 的 JDBC 连接池,那么 Spring Boot 就会直接使用 Tomcat 的连接池。否则, Spring Boot 会在类路径下寻找以下连接池: HikariCP 或 Commons DBCP 2。

    HikariCP是日本程序员开源的一个数据库连接池组件,据说代码非常轻量,并且速度也非常快。根据官方提供的数据,在i7,开启32个线程32个连接的情况下,进行随机数据库读写操作,HikariCP的速度是现在常用的C3P0数据库连接池的数百倍。在SpringBoot2.0中,官方也是推荐使用HikariCP。

    2 通过 JNDI 配置

    也可以通过JNDI来配置数据源。这种方式拥有以下优点:

    1. 工程包中可以不必包含与数据源相关的具体参数信息;
    2. 方便运维人员定期修改数据库密码;
    3. 替换连接池的工作交给容器处理。

    (1)工程包配置 JNDI

    修改工程包的 application.yml:

    spring:
      datasource:
        jndi-name: XXX_DATASOURCE
    

    (2)Tomcat 配置 JNDI

    修改 Tomcat 的 conf/context.xml:

    <Resource name="XXX_DATASOURCE" auth="Container" type="javax.sql.DataSource" factory="com.alibaba.druid.pool.DruidDataSourceFactory" username="deniro" password="2020" driverClassName="oracle.jdbc.OracleDriver" url=" jdbc:oracle:thin:@192.168.4.15:1599:orcl" filters="stat" connectionProperties="druid.stat.mergeSql=true;druid.stat.slowSqlMillis=2000" useGlobalDataSourceStat="true" defaultTransactionIsolation="READ_COMMITTED" validationQuery="select 1 from dual" removeAbandoned="false" logAbandoned="true" removeAbandonedTimeout="1800" maxActive="20" initialSize="5" maxWait="60000" minIdle="10" timeBetweenEvictionRunsMillis="60000" minEvictableIdleTimeMillis="300000" testWhileIdle="true" testOnBorrow="false" testOnReturn="false" asyncInit="true"/>
    

    示例使用了 Druid 连接池。
    注意:如果在 Tomcat 容器侧修改了默认连接池方案,那么就必须把相应的依赖包放入Tomcat 安装目录的 lib 文件夹中。

    3 配置初始化脚本

    初始化脚本分为两部分,一个是表结构初始化;另一个是数据初始化。它们分别配置在 schema 与 data 选项中。形如:

    spring:
        # 数据源
      datasource:
        schema:
          - classpath:sql/model1-schema.sql
          - classpath:sql/model2-schema.sql
        data:
          - classpath:sql/model1.sql
    

    在 yml 格式中,列表项使用的是 - 加上空格作为前缀。
    这些脚本文件需要放置在 src/resources/sql 文件夹下。

    Spring Boot 项目启动时,就会先运行这些脚本,执行初始化操作。

    相关文章

      网友评论

          本文标题:说说在 Spring Boot 中如何配置数据源

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