Spring Boot 如何整合连接池

 更新时间:2020年11月02日 09:34:24   作者:_我姓李  
这篇文章主要介绍了Spring Boot 如何整合连接池,帮助大家更好的理解和学习spring boot框架,感兴趣的朋友可以了解下

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请求的模块。

以上就是Spring Boot 如何整合连接池的详细内容,更多关于Spring Boot 整合连接池的资料请关注脚本之家其它相关文章!

相关文章

  • SpringMVC之异常处理解读

    SpringMVC之异常处理解读

    这篇文章主要介绍了SpringMVC之异常处理解读,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-03-03
  • java适配器模式之万物拟人化

    java适配器模式之万物拟人化

    本文详细介绍了什么是适配器模式,适配器模式的种类以及各种类的详细讲解等,需要学习该知识点的小伙伴可以参考这篇文章
    2021-08-08
  • Netty分布式ByteBuf使用命中缓存的分配解析

    Netty分布式ByteBuf使用命中缓存的分配解析

    这篇文章主要为大家介绍了Netty分布式ByteBuf 使用命中缓存的分配解析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-03-03
  • java web开发之实现购物车功能

    java web开发之实现购物车功能

    这篇文章主要为大家详细介绍了java web开发之实现购物车功能的相关资料,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-07-07
  • 很详细的Log4j配置步骤

    很详细的Log4j配置步骤

    Log4J的配置文件(Configuration File)就是用来设置记录器的级别、存放器和布局的,它可接key=value格式的设置或xml格式的设置信息。通过配置,可以创建出Log4J的运行环境。
    2008-11-11
  • 解决Jackson反序列化map,set等复杂类型问题

    解决Jackson反序列化map,set等复杂类型问题

    这篇文章主要介绍了解决Jackson反序列化map,set等复杂类型问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-09-09
  • IDEA2022版本创建maven web项目的两种方式详解

    IDEA2022版本创建maven web项目的两种方式详解

    创建maven web项目有两种方式,一种是使用骨架方式,一种是不使用骨架的方式,本文结合实例代码给大家介绍了IDEA2022版本创建maven web项目的两种方式,需要的朋友可以参考下
    2023-02-02
  • Java操作IO对象流进行数据的读写

    Java操作IO对象流进行数据的读写

    这篇文章主要介绍了Java操作IO对象流进行数据的读写,本文通过例子逐步介绍了java如何操作IO流,和文字解析,需要的朋友可以参考下
    2021-07-07
  • java爬虫Gecco工具抓取新闻实例

    java爬虫Gecco工具抓取新闻实例

    本篇文章主要介绍了JAVA 爬虫Gecco工具抓取新闻实例,具有一定的参考价值,感兴趣的小伙伴们可以参考一下。
    2016-10-10
  • Java中的自动装箱与自动拆箱的实现

    Java中的自动装箱与自动拆箱的实现

    自动装箱和自动拆箱使得我们在使用基本数据类型时更加方便,同时也提高了代码的可读性和健壮性,本文将详细介绍Java中的自动装箱和自动拆箱机制,感兴趣的可以了解一下
    2023-08-08

最新评论