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=utf8spring.datasource.username=rootspring.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;@SpringBootTestpublic 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=30mybatis.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申请的模块。