spring超全面详解

article/2025/9/15 16:43:30

spring概述

Spring 是于2003年兴起的一款轻量级的,非侵入式的IOC和AOP的一站式的java开发框架
  为简化企业级应用开发而生.
1.轻量级:   就是指spring核心功能的jar包不大
2.非侵入式:  我们的业务代码不需要继承或实现spring中任何的类或接口
3.IOC:   控制反转    就是把创建对象的权利反转给spring框架
4.AOP:  面向切面编程    它是一种编程思想,是面向对象编程(OOP) 的一种补充。面向对象编程将程序抽象成各个层次的对象,而面向切面编程是将程序抽象成各个切面
5.一站式框架:   Spring 本身也提供了数据访问功能和 web 功能,以及可以很好的管理其他框架

Spring 体系结构

Core Container(核心容器):
Beans:     管理 Beans
Core:       Spring 的核心,提供IOC容器的对象的创建并处理依赖对象关系
Context:  配置文件  就是Bean的关系的集合,也叫做IOC容器,调用了大部分spring-core中的方法
ExpressionLanguage: SpEL 表达式
AOP:    切面编程   使 Spring框架管理对象支持AOP,同时这个模块也提供了事务管理
ORM:   提供了对现有的ORM框架的支持,例如Hibernate,JDO,Mybatis等。
DAO:    提供了对数据访问对象(Data Access Object,DAO)模式和JDBC的支持,把实现业务逻辑和数据库访问的代码实现分离等。
Data Access(数据库整合): JDBC, ORM, OXM, JMS, Transaction
springWeb(MVC Web 开发):  是 spring 框架的一个模块,springWeb 和 spring 无需通过中间整合层进行整合,   是一个基于 mvc 的 web 框架,方便前后端数据的传输,    拥有控制器,接收外部求,解析参数传给服务层

spring搭建和测试

spring项目的搭建就是在Maven项目的基础上添加一些依赖并且进行一些配置

1.Maven 导入 spring 核心基础 jar

<!-- spring-context -->
< dependency >
< groupId >org.springframework</ groupId >
< artifactId >spring-context</ artifactId >
< version >5.2.2.RELEASE</ version >
</ dependency >
2. 编写 spring 配置文件
<? xml version ="1.0" encoding ="UTF-8" ?>
< beans xmlns ="http://www.springframework.org/schema/beans"
xmlns: xsi ="http://www.w3.org/2001/XMLSchema-instance"
xsi :schemaLocation ="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd" >
< bean id ="admin" class ="com.ffyc.spring.bean.Admin" > </ bean >
</ beans >
3. 编写一个 Admin 实体类
public class Admin {private int id;private String account;public Admin() {System.out.println("无参构造方法");}public Admin(int id, String account) {this.id = id;this.account = account;}public int getId() {return id;}public void setId(int id) {this.id = id;}public String getAccount() {return account;}public void setAccount(String account) {this.account = account;}@Overridepublic String toString() {return "Admin{" +"id=" + id +", account='" + account + '\'' +'}';}
}

4.测试

 //读取spring配置文件,并对文件中配置的对象进行创建ClassPathXmlApplicationContext app = new ClassPathXmlApplicationContext("spring.xml");Admin admin = app.getBean("admin", Admin.class);System.out.println(admin);

IOC(控制反转)

概述:  它是一种 设计思想 ,就是 将原本在程序中手动创建对象的控制权,交由 Spring 框架来
管理。 IOC 容器是具有依赖注入功能的容器,负责对象的实例化、对象的初始化,对象和对象之间依赖关系配置、对象的销毁、对外提供对象的查找等操作,对象的整个生命周期都是由容器来控制。我们需要使用的对象都由 ioc 容器进行管 理,不需要我们再去手动通过 new 的方式去创建对象,由 ioc 容器直接帮我们组装好,当我们需要使用的时候直接从 ioc 容器中直接获取就可以了。
正控: 若要使用某个对象,需要 自己去负责对象的创建
反控: 若要使用某个对象,只需要 从 Spring 容器中获取需要使用的对象,不关心对象的创建过程,也就是把 创建对象的控制权反转给了 Spring 框架.
底层实现方式: 解析 xml/扫描注解标签 + 工厂模式 + 反射机制

spring中bean的管理

1.基于 xml 配置方式依赖注入

在spring创建对象(控制反转)时,还需要为我们的对象属性进行初始化赋值,这个过程称为依赖注入

(1)get,  set  方式注入

 <bean id="admin" name="admin2" class="com.ffyc.ssm.model.Admin" scope="prototype"><property name="id" value="10"></property><property name="account" value="admin"></property></bean>     

(2)构造方法注入

  <bean id="admin" name="admin1" class="com.ffyc.ssm.model.Admin" scope="prototype"><constructor-arg name="id" value="100"></constructor-arg><constructor-arg name="account" value="admins"></constructor-arg></bean>
bean 配置需要 spring 管理的类,也叫做spring管理的类叫做bean对象
id 生成的对象名
class 全类名
name 对象别名,可以为多个
scope(bean的作用域): singleton(默认值):在 Spring 中只存在一个 bean 实例, 单例模式.  在spring启动时就会创建
prototype:原型 getBean()的时候都会 new Bean()
2.注解方式实现依赖注入
(1)注解需要的 jar 包,  注解功能封装在 AOP 包中,导入 Spring aop jar 包即可
<dependency><groupId>org.springframework</groupId><artifactId>spring-aspects</artifactId><version>5.2.2.RELEASE</version>
</dependency>

(2)在spring中开启注解扫描

<context:component-scan base-package="包名"> </context:component-scan>
(3)利用注解方式创建对象
@Component(value=“admin”)也就是相当于 <bean id=“admin” class=“”></bean>
@Service
@Repository
以上注解都可以实现创建对象功能,只是为了后续扩展功能,在不同的层使用不同的注解标记
@Scope(value=“prototype”) 原型         @Scope(value=“ singleton ”) 单例
3.注解方式注入属性
(1)@Autowired
@Autowired 是 Spring 提供的注解,有两种方式进行注入
byType 自动注入
该注解默认使用按类型自动装配 Bean 的方式。
byName 自动注入
如果我们想使用按照名称(byName)来装配,可以结合@Qualifier 注解一起使用。
需要在引用属性上联合使用注解@Autowired 与@Qualifier。@Qualifier 的value 属性用于指定要匹配的 Bean 的 id 值。
  @Autowired @Qualifier(value = "adminDao")AdminDao adminDao;
(2)@Resource 自动注入
S pring 提供了对 jdk 中@Resource 注解的支持。
@Resource 注解既可以按名称匹配 Bean,也可以按类型匹配 Bean。默认按照 ByType 自动注入
byName 注入引用类型属性
@Resource 注解指定其 name 属性,则 name 的值即为按照名称进行匹配的 Bean 的 id。
 @Resource(name = "adminDao")AdminDao adminDao;

4.注解与 XML 的对比

注解优点: 方便,直观,高效(代码少,没有配置文件的书写那么复杂)
注解缺点: 以硬编码的方式写入到 Java 代码中,修改是需要重新编译代码的。
xml 优点是: 配置和代码是分离的,在 xml 中做修改,无需编译代码,只需重启服务器即可将新的配置加载。
xml 的缺点是: 编写麻烦,效率低,大型项目过于复杂。

Spring JDBC

Spring 是个一站式框架:Spring 自身也提供了控制层的 SpringMVC 和 持久层的 Spring JdbcTemplate。
搭建步骤:
1.下载 Spring JdbcTemplate 的 jar 包
<!-- spring-jdbc -->
< dependency >
< groupId >org.springframework</ groupId >
< artifactId >spring-jdbc</ artifactId >
< version >5.2.2.RELEASE</ version >
</ dependency >
2.导入阿里巴巴提供的数据源管理组件  druid(德鲁伊)    
常用的数据库连接池组件:dbcp c3p0 数据源组件,封装了连接数据库,还有数据库连接池功能
<!-- 阿里数据源 -->
< dependency >
< groupId >com.alibaba</ groupId >
< artifactId >druid</ artifactId >
< version >1.1.10</ version >
</ dependency >
3.导入属性文件(config.properties)
classDriverName=com.mysql.cj.jdbc.Driver
url=jdbc:mysql://127.0.0.1:3306/ssmdb?serverTimezone=Asia/Shanghai
uname=root
pwd=root
<context:property-placeholder location="config.properties"/>
4.管理数据源对象
spring 管理与数据库链接 (数据源)
<bean id="dataSource"class="com.alibaba.druid.pool.DruidDataSource">
<propertyname="driverClassName" value="${driverClassName}"></property>
<property name="url" value="${url}"></property>
<property name="username" value="${uname}"></property>
<property name="password" value="${pwd}"></property>
<property name="initialSize" value="10"></property>
<property name="minIdle" value="5"></property>
<property name="maxActive" value="20"></property>
</bean>
5.创建spring封装的jdbc
 <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate"><!--注入数据源的对象--><property name="dataSource" ref="dataSource"></property></bean>

6.在类中获得 JdbcTemplate 对象,直接使用。

 

 

AOP(面向切面编程)

前言:     开发好一个版本后,后期如果需要添加新的功能,就需要修改原来的代码,加入调用新功能的代码.  这样开发就很麻烦,会存在大量的冗余代码.

概述:  AOP为Aspect Oriented Programming的缩写 面向切面编程,  它是 OOP 的延续,可以对业务逻辑和非业务逻辑进行隔离,从而使得各部分之间的耦合度降低,提高程序的可重用性,同时提高了开发的效率。 AOP、OOP 是面向不同领域的两种设计思想。OOP (面向对象编程)针对业务处理过程的实体及其属性和行为进行抽象封装,以获得更加清晰高效的逻辑单元划分。 而 AOP 则是针对业务处理过程中的切面进行提取,它所面对的是处理过程中的某个步骤或阶段,以获得逻辑过程中各部分之间低耦合性的隔离效果。

也就是将程序中的一些非业务代码进行提取,在不需要修改原来代码的情况下,为程序添加额外的功能.
非业务代码:  (验证权限,打印日志,提交事务,统一异常处理)

核心原理: 使用动态代理的方式在执行方法前后或者出现异常的时候做加入相关的逻辑.

使用案例: 事务处理:开启事务,关闭事务,出现异常后回滚事务
                权限判断:在执行方法前,判断是否具有权限
                日志:在执行前进行日志处理

 AOP 的基本概念

连接点(Joinpoint): 类中可以被增强的方法,这个方法就被称为连接点
切入点(pointcut): 类中有很多方法可以被增强,但实际中只有 add 和 update被增强了,那么 add 和 update 方法就被称为切入点(实际实现的连接点)
通知(Advice): 通知是指一个切面在特定的连接点要做的事情(增强的功能)。通知分为方法执行前通知,方法执行后通知,环绕通知等.
切面(Aspect): 把通知添加到切入点的整个过程称为切面.
目标(Target): 代理的目标对象(连接点,切入点所在类)
代理(Proxy): 向目标对象应用通知时创建的代理对象
springAOP 实现
AspectJ 是一个基于 Java 语言的 AOP 框架,它提供了强大的 AOP 功能,且其实现方式更为简捷,使用更为方便, 而且还支持注解式开发。所以,Spring 又将 AspectJ 的对于 AOP 的实现也引入到了自己的框架中。
首先下载 AOP 相关 jar
< dependency >
< groupId >org.springframework</ groupId >
< artifactId >spring-aspects</ artifactId >
< version >5.2.2.RELEASE</ version >
</ dependency >
1.基于 aspectj 的 xml 配置方式实现
AspectJ 中常用的通知有五种类型:
前置通知,后置通知,环绕通知,异常通知,最终通知
< bean id ="aopdemo" class ="com.ff.spring.aop.AopDemo" ></ bean >
< aop :config >
<!-- 配置切入点 -->
< aop :pointcut expression ="execution(*com.ff.spring.service.UserService.adduser(..))" id ="adduser" />
< aop :pointcut expression ="execution(*com.ff.spring.service.UserService.*(..))" id ="allmethod" />
<!-- 配置通知和切入点 -->
< aop :aspect ref ="aopdemo" >
< aop :before method ="savelog" pointcut-ref ="adduser" />
< aop :after method ="savelog" pointcut-ref ="adduser" />
< aop :around method ="aroundAdvice" pointcut-ref ="adduser" />
< aop :after-throwing method ="exceptionAdvice" pointcut-ref ="allmethod"  throwing ="e" />
</ aop :aspect >
</ aop :config >

 

2.基于注解方式的实现
启动 AspectJ 支持:<aop:aspectj-autoproxy /> <!--自动代理-->

 

环绕通知可以包括前面的所有与通知

Spring 事物管理

概述:   事物可以看做是由对数据库若干操作组成的一个单元。
我们在开发企业应用时,对于业务人员的一个操作实际是对数据读写的多步操作的结合。由于数据操作在顺序执行的过程中,任何一步操作都有可能发生异常, 异常会导致后续操作无法完成,此时由于业务逻辑并未正确的完成,之前成功操作数据的并不可靠,需要在这种情况下进行回退。
事务的作用就是为了保证用户的每一个操作都是可靠的,事务中的每一步操作都必须成功执行,只要有发生异常就回退到事务开始未进行操作的状态,这些操作要么都完成,要么都取消,从而保证数据满足一致性的要求
Spring 中的事务管理分为两种形式,一种是编程式事务,一种是声明式事务.
编 程 式 事 务 在 项 目 中 很 少 使 用 , 这 种 方 式 需 要 注 入 一 个 事 务 管 理 对 TransactionTemplate ,然后在我们代码中需要提交事务或回滚事务时自己写代码实现.
声明式事务 管理建立在 AOP 基础上,本质是对方法前后进行拦截,所以声明式事务是方法级别的。
Spring 声明式事物管理方式有两种:
基于 xml 配置
基于注解实现
基于注解实现
1.配置事物管理器
<!-- 配置 spring 事务管理类, 并注入数据源 -->
< bean id ="transactionManager"
class ="org.springframework.jdbc.datasource.DataSourceTransactionManager" >
< property name ="dataSource" ref ="dataSource" ></ property >
</ bean >
2.开启注解事务管理 
< tx :annotation-driven transaction-manager ="transactionManager" />
3.在 service 中控制事务
@Service(value="adminDao")
@Transactional
@Transactional的用法

        一般把    @Transactional标签添加在service中,
        @Transactional可以添加在service层中类上,类中所有的方法都会添加事务管理功
        @Transactional如果只添加在某个方法上,那么表示此方法在事务管理中进行

@Transactional在以下6种情况下会失效.
         1.修饰一个非public的方法,底层权限只针对public修饰的方法
         2.方法中的异常被catch捕获处理了
         3.默认情况下出现编译期异常,事务不生效
            默认情况下只对运行期异常进行捕获@Transactional(rollbackFor = RuntimeException.class)
            我们可以把其修改为@Transactional(rollbackFor = Exception.class),这样就可以处理任意的异常
         4.@Transactional事务传播行为设置错误
         5.数据库引擎不支持事务, 数据库引擎是mysql底层具体的一种数据处理实现的机制
             常用的两个引擎: innodb(支持事务功能),myisam(不支持事务)
         6.在一个非事务方法中使用this(原始的对象==自己new出来的对象)     

Spring 事务传播行为

概述: 既然是传播,那么至少有两个东西,才可以发生传播。单体不存在传播这个行为。 事务传播行为(propagation behavior)指的就是当一个事务方法被另一个事务方法调用时,这个事务方法应该如何进行。事务传播行为是 Spring 框架独有的事务增强特性,他不属于的事务实际提供方数据库行为

Spring 定义了七种传播行为:
PROPAGATION_REQUIRED       如果当前没有事务,就新建一个事务,如果已经存在一个事务中, 加入到这个事务中。这是最常见的选择。
PROPAGATION_SUPPORTS       支持当前事务,如果当前没有事务,就以非事务方式执行。
PROPAGATION_MANDATORY      使用当前的事务,如果当前没有事务,就抛出异常。
PROPAGATION_REQUIRES_NEW       新建事务,如果当前存在事务,把当前事务挂起。
PROPAGATION_NOT_SUPPORTED 以非事务方式执行操作,如果当前存在事务,就把当前事务挂起。
PROPAGATION_NEVER        以非事务方式执行,如果当前存在事务,则抛出异常。
PROPAGATION_NESTED        如果当前存在事务,则在嵌套事务内执行。如果当前没有事务, 则执行与 PROPAGATION_REQUIRED 类似的操作。

Spring 集成 Mybatis

Spring 集成 Mybatis 其核心是将 SqlSessionFactory 交由 Spring 管理,并由
Spring 管理对 dao 接口的代理实现
1. 导入 mybatis jar 包
Spring 结合 mybatis 插件包
< dependency >
< groupId >org.mybatis</ groupId >
< artifactId >mybatis-spring</ artifactId >
< version >1.3.1</ version >
</ dependency >
2.配置 sqlSessionFactory
< bean id ="sqlSessionFactory" class ="org.mybatis.spring.SqlSessionFactoryBean" >
< property name ="dataSource" ref ="dataSource" ></ property >
< property name ="configLocation" value ="mybatis-config.xml" ></ property >
< property name ="mapperLocations" value ="com/ff/*Mapper.xml" >
</ property >
</ bean >
3.指定生成接口代理
< bean id ="mapperFactory" class ="org.mybatis.spring.mapper.MapperScannerConfigurer" >
< property name ="basePackage" value ="com.ff.ssm.dao" ></ property >
< property name ="sqlSessionFactoryBeanName" value ="sqlSessionFactory" >
</ property >
</ bean >
4.在 service 中注入 Dao 代理接口,此接口有 Spring 代理实现
@Resource
LoginDao loginDao;


http://chatgpt.dhexx.cn/article/BjKeAmlt.shtml

相关文章

Spring全面详解(学习总结)

Spring FrameWork一、 前言二、IOC(控制反转)2.1 对于IOC的理解2.2如何使用IOC2.3配置文件的解读2.4IOC容器创建bean的两种方式2.5从IOC容器中取bean2.6bean的属性如果包含特殊字符 三、DI(依赖注入)四、Spring中的bean五、Spring中的继承六、Spring的依赖七、Spring读取外部资…

查看Linux的用户权限(转载)

&#xff08;转&#xff09;Linux查看用户及其权限管理 查看用户 请打开终端&#xff0c;输入命令&#xff1a; $ who am i或者 $ who mom likes输出的第一列表示打开当前伪终端的用户的用户名&#xff08;要查看当前登录用户的用户名&#xff0c;去掉空格直接使用 whoami …

linux查看登录用户

1&#xff0c;w w,显示目前登入系统的用户信息 -f  开启或关闭显示用户从何处登入系统。 -h  不显示各栏位的标题信息列。 -l  使用详细格式列表&#xff0c;此为预设值。 -s  使用简洁格式列表&#xff0c;不显示用户登入时间&#xff0c;终端机阶段作业和程序所耗费…

Linux下查看当前用户和所属用户组方法总结

1、查看当前用户 &#xff08;1&#xff09;whoami &#xff08;2&#xff09;id -un &#xff08;3&#xff09;who -H &#xff08;4&#xff09;who&#xff08;查看当前登陆的所有用户&#xff0c;和who -H功能差不多&#xff09; 2、查看当前用户所属的组 &#xff08…

linux如何查看所有的用户和组信息?

首先打开终端&#xff08;这里是Ubuntu系统&#xff09;&#xff0c;其他的打开命令界面即可 然后输入命令行cat /etc/passwd&#xff0c;直接按下回车键即可 然后这里就会显示很多的信息&#xff0c;所有的用户都在这里面了 然后就是查看所有的组&#xff0c;同样的方法…

linux 查看用户信息

目录 /etc/passwd id命令 whois命令 whoami命令 who命令 w命令 finger命令 vlock命令 /etc/passwd 有的用户信息在根目录 /etc/passwd 文件内&#xff0c;而passwd的所有权限是root用户及root组用户&#xff0c;所有想要查看所有用户&#xff0c;需要root用户登录系统…

linux查看所有用户命令

1、Linux里查看所有用户 (1)在终端里.其实只需要查看 /etc/passwd文件就行了. (2)看第三个参数:500以上的,就是后面建的用户了.其它则为系统的用户. 或者用cat /etc/passwd |cut -f 1 -d : 2、用户管理相关命令 useradd命令 useradd 选项 用户名 -d 目录,指定用户主目录,如…

Linux命令之查看登录用户列表users

概述 users 命令 用于显示当前登录系统的所有用户的用户列表。每个显示的用户名对应一个登录会话。如果一个用户有不止一个登录会话&#xff0c;那他的用户名将显示相同的次数。 注&#xff1a;该命令与 who、w 类似。不过该命令只会显示登录用户名&#xff0c;信息简略。 语法…

Linux 系统中如何查看当前所有登录的用户

导读今天我们简单介绍下在 Linux 系统中列出登录用户的几种方法。 在多用户的 Linux 系统中&#xff0c;有时候会有查询当前已登录到系统中用户的需求。比如因某种原因要​​注销某个用户​​​。 今天我们简单介绍下在 Linux 系统中列出登录用户的几种方法。 我们所介绍的这…

查看linux用户密码

需要root用户 用户名在/etc/passwd这个文件中&#xff1b; 密码在/etc/shadow中 cat /etc/passwd cat /etc/shadow root:$6$1WtyW6O0baQmTkDG$o.YXXTOZSb7hP4HitigzaW/mZS433aSFpancmyNKYxU/59FuPVlIeVNBUKQQVgzx3kszkQAxo6C2wjrRbv0VZ.::0:99999:7::: 格式解释 {用户名}…

linux查看用户名

【步骤一】cat /etc/passwd cat /etc/passwd查看所有的用户信息&#xff0c;详情如下图 【步骤二】cat /etc/passwd|grep 用户名 cat /etc/passwd|grep 用户名&#xff0c;用于查找某个用户&#xff0c;如下图 【步骤三】cat /etc/group cat /etc/group查看所有组信息&#x…

linux如何查看用户

【步骤一】cat /etc/passwd cat /etc/passwd查看所有的用户信息&#xff0c;详情如下图 【步骤二】cat /etc/passwd|grep 用户名 cat /etc/passwd|grep 用户名&#xff0c;用于查找某个用户&#xff0c;如下图 【步骤三】cat /etc/group cat /etc/group查看所有组信息&…

linux下查看当前用户、所有用户的方法

注&#xff1a; 1、以下测试在ubuntu 9.10上进行&#xff0c;其他平台未测试。 2、这个只是我个人的理解&#xff0c;不一定完全正确 3、版权所有&#xff0c;转载请注明作者和出处 一、查看当前用户 1、shell终端中输入&#xff1a;who 当前用户为&#xff1a;book&#xf…

linux 查看当前用户密码

用过Linux系统的人都知道,Linux系统查看用户不是会Windows那样,鼠标右键看我的电脑属性,然后看计算机用户和组即可。 那么Linux操作系统里查看所有用户该怎么办呢?用命令。其实用命令就能很轻松的查看到Linux系统有哪些用户。 1、Linux里查看所有用户 (1)在终端里.其实只需…

面试官:说说Linux下查看当前登录用户信息的所有方法

点赞关注,不会迷路! 背景 作为系统管理员,你可能经常会(在某个时候)需要查看系统中有哪些用户正在活动。有些时候,你甚至需要知道他(她)们正在做什么。本文总结了4种查看系统用户信息(通过编号(ID))的方法。 正文 1. 使用w命令查看登录用户正在使用的进程信…

应用使用Druid连接池经常性断链问题分析

前段时间有应用使用Druid连接池经常的提示断链报错&#xff0c;整个问题排查分析过程很有意思。这里将Druid连接池、数据库层以及负载均衡层的配置分析下&#xff0c;记录整个问题的分析过程&#xff0c;同时梳理下Druid连接池的配置和连接保活及回收机制。 1、问题背景 应用通…

druid连接池 - 长时间阻塞问题排查

前言 最近参与一个新项目&#xff0c;从老项目拷贝过来的代码&#xff0c;同样用的druid连接池 PG。但是新项目却经常出现阻塞的情况&#xff0c;有时候甚至可以阻塞半个小时。一时间傻眼了。。 问题排查 问题背景 我们一共有6个开发同学&#xff0c;由于项目时间还是比较…

Druid 连接池技术的使用

文章目录 官网链接连接性能消耗问题分析数据库连接池的作用市面常见连接池产品和对比国货之光druid连接池使用导入druid依赖硬编码方式&#xff08;了解&#xff09;软编码方式druid配置(了解) 官网链接 http://www.apache-druid.cn/GettingStarted/chapter-1.html 连接性能消…

druid连接池例子

先导入jia包 驱动jar包 druid的Jar包 写配置文件 定义配置文件&#xff08;手动加载&#xff09; 名称&#xff1a;自定义路径&#xff1a;自定义 封装工具类代码 package com.lingaolu.dataSource;import com.alibaba.druid.pool.DruidDataSourceFactory;import javax.sql.Dat…

Druid连接池的使用

先了解什么是druid Druid是阿里开源的数据库连接池&#xff0c;作为后起之秀&#xff0c;性能比dbcp、c3p0更高&#xff0c;使用也越来越广泛。 当然Druid不仅仅是一个连接池&#xff0c;还有很多其他的功能。它还包含一个ProxyDriver&#xff0c;一系列内置的JDBC组件库&#…