关于spring:Spring-Boot-整合连接池

8次阅读

共计 3142 个字符,预计需要花费 8 分钟才能阅读完成。

Spring Boot 整合连接池

在理论开发中应用程序与数据库交互时,“取得连贯”或在“开释资源”是十分耗费资源的两个过程,为了解决如此类性能问题,通常这种状况咱们采纳连接池技术重用连贯 Connection 对象,如图 1 所示。

图 -1
其实 Java 为数据库连接池提供了公共的接口:javax.sql.DataSource,各个厂商须要让本人的连接池实现这个接口。而后咱们的应用程序中耦合这个接口,便能够不便的切换不同厂商的连接池,常见的连接池有 DBCP、C3P0、DRUID、HikariCP 等。

通过连接池获取连贯的一个根本过程,如图 2 所示:

图 -2

在图 - 2 中,用户先通过 DataSource 对象的 getConnection()办法,获取一个连贯,如果池中有连贯,则间接将连贯返回给用户。如果池中没有连贯,则会调用 Dirver(驱动)对象的 connect 办法从数据库获取,拿到连贯后,能够将连贯在连接池中也放一份,而后再将连贯返回给调用用户。

一、整合 HikariCP 连接池

HikariCP号称是目前世界上最快的连接池,有江湖一哥的名称,目前在 SpringBoot 工程默认举荐应用 HikariCP 连接池。咱们在创立一个新我的项目时步骤如下:

第一步:增加依赖。

编辑我的项目中的 pom.xml,查找MySQL Driver、JDBC API 依赖,依赖增加后,会在 pom.xml 文件中主动增加如下两个依赖配置:

1.mysql 数据库驱动依赖。

<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <scope>runtime</scope>
</dependency>

2.spring 对象 jdbc 反对(此时会默认帮咱们下载 HiKariCP 连接池)

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

第二步: 配置连接池。

关上 application.properties 配置文件,增加如下内容。

spring.datasource.url=jdbc:mysql:///dbgoods?serverTimezone=GMT%2B8&characterEncoding=utf8

spring.datasource.username=root

spring.datasource.password=root

第三步:进行单元测试。

package com.cy.pj.common.datasource;

import java.sql.SQLException;
import javax.sql.DataSource;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;

@SpringBootTest
public class DataSourceTests {

@Autowired
    private DataSource dataSource;
 @Test
    public void testConnection() throws Exception{System.out.println(dataSource.getConnection());
    }
}

第四步:原理剖析,如图 - 3 所示。

图 -3

在图 - 3 中,演示了咱们在测试类 DataSourceTests 中基于 DataSource 获取连贯的一个根本过程。

二、Spring Boot 整合 MyBatis 框架

MyBatis 是一个优良的长久层框架,底层基于 JDBC 实现与数据库的交互。并在 JDBC 操作的根底上做了封装的优化,他借助灵便的 SQL 定制,参数以及后果集的映射形式,更好的适应了以后互联网技术的倒退。MyBatis 框架的简略利用框架,如图 - 4 所示:

图 -4

在以后互联网利用我的项目中,MyBatis 框架通常会由 spring 框架进行资源整合,作为技术层实现数据交互操作。

1、初始配置

增加 mybatis 启动依赖
参考 mybatis 官网,找到 springboot 菜单选项。基于菜单项找到 MyBatis 启动依赖。

    <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>2.1.1</version>
    </dependency>

留神: 在增加此依赖时,肯定指定其版本(version),因为在 springboot 默认配置中没有设置 mybatis 框架版本。

2、MyBatis 繁难配置

咱们增加了 mybatis 依赖后,spring 框架启动时会对 mybatis 进行主动配置。例如 SqlSessionFactory 工厂对象的创立。想要对 mybatis 进行繁难配置是在 application.properties 文件中进行

mybatis.configuration.default-statement-timeout=30
mybatis.configuration.map-underscore-to-camel-case=true

配置 mybatis 中的 sql 日志的输入:

logging.level.com.cy=DEBUG

3、业务剖析

根本业务的实现及单元测试

基于 Spring 对 MyBatis 框架的整合,实现对商品库中数据的删除操作。

第一步:业务 API 架构的设计, 如图 - 5 所示


图 -5

第二步:基于 id 执行商品删除信息,业务时序见图 -6


图 -6

业务进阶剖析及实现

在 MyBatis 框架中定义 SQL 映射的形式有两种:一种是将 SQL 映射定义在咱们的 xml 映射文件中,一种是借助注解将其申明在接口办法上。咱们在理论我的项目中对于简略的 SQL 映射能够间接以注解的形式进行申明即可,简单 SQL 还是要写到 xml 中,充分利用动静 SQL 进行设计会更好些。

三、Spring Boot 整合 SpringMVC 利用

概述

MVC(Model-view-controller)是软件工程中的一种软件架构模式,基于此模式把软件系统分为三个根本局部:模型(Model)、试图(view)和控制器(Controller)。目标是通过这样的设计使程序结构更简洁、直观,升高问题的复杂程度。其中各个组成部分的职责为:

视图(view):--UI 设计人员进行图形界面的设计,负责实现与用户交互。控制器(controller):-- 负责获取申请,解决申请,响应后果。模块(model):-- 实现业务逻辑,数据逻辑。

咱们在软件设计时,通常要遵循肯定的设计准则。MVC 架构迷失的设计中,首先基于繁多职责准则让每个对象各司其职。再通过 ” 高内聚,低耦合 ” 的设计思维实现相干对象之间的交互,这样能够更好的进步程序可维护性和可扩展性。

Java EE 技术体系中,MVC 设计思维的实现如图所示。


图 -7

在图 7 中,Servlet 充当 MVC 中的 Controller,负责调用 model 解决业务,负责转发或重定向到某个页面,在页面上出现数据。模块封装了对 Servlet 的技术利用,简化了程序员对申请和响应过程中数据的解决。Spring MVC 是 Spring 框架中基于 MVC 设计思维实现的一个用于解决 Web 申请的模块。

正文完
 0