Java--SpringBoot-22-配数据源连接数据库

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: 配数据源连接数据库

在上篇文章中,我们学习了SpringBoot的内嵌数据库,最后的时候我们用到了一个属性来进行本地持久化:

spring.datasource.url=jdbc:h2:file:~/.h2/h2db

       这个url其实就是一个数据库的连接地址。未设置spring.datasource.url属性来指定 URL的话,Spring Boot 会尝试自动配置嵌入式数据库。

配置数据源连接数据库

       Java的javax.sql.DataSource提供了处理数据库连接的标准方法。下面我们来连接一下mysql数据库,第一件事肯定是先导入驱动依赖:

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

       注意这里的版本要和服务器的一样,比如,mysql8就得用8.0以上。

       我们可以使用URL以及一些凭据来实现连接生产数据库,例如:

#####################datasource#####################spring.datasource.url=jdbc:mysql://127.0.0.1:3306/xinghua?useSSL=false&characterEncoding=utf-8&allowPublicKeyRetrieval=truespring.datasource.username=rootspring.datasource.password=rootspring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver

启动打印出来看看看看:

importjavax.sql.DataSource;
@AutowiredprivateDataSourcedataSource;
@RequestMapping(value="/showDataSource")
publicStringshowDataSource() throwsSQLException {
StringBuilderstr=newStringBuilder();
str.append("数据源信息    ->"+dataSource+"<br/>");
str.append("数据连接信息->"+dataSource.getConnection()+"<br/>");
returnstr.toString();

image.png

       奥里给!看到了哇!就这么简单就连接成功了哈,我们访问昨天写的内存数据库的save方法,查看是否存到了表里:


image.png


       OK!完美!这个表是在启动项目的时候就已经创建好了,可以看启动日志。之所以简单配置即可使用是因为很多东西SpringBoot已经默认配置好了:

通过DataSourceAutoConfifiguration配置了数据源DataSource

通过DataSourceTransactionManagerAutoConfiguration配置了事务管理器DataSourceTransactionManager

通过JdbcTemplateAutoConfiguration配置了一个JdbcTemplate,方便用于进行JDBC操作

一些其他的配置,有兴趣可以上官方文档查查:

image.png

比如下面这配置的意思就是:如果没有连接可用,这会将池设置为在抛出异常之前等待 10000 毫秒,将最大连接数限制为 50 并在从池中借用连接之前验证连接。

#如果没有可用的连接,则在引发异常之前要等待的毫秒数。spring.datasource.tomcat.max-wait=10000#可以同时从该池中分配的最大活动连接数。spring.datasource.tomcat.max-active=50#在从池中借用连接之前先对其进行验证。spring.datasource.tomcat.test-on-borrow=true

支持的连接池

Spring Boot 使用以下算法来选择特定实现:

首选HikariCP,因为它的性能和并发性。如果HikariCP可用,我们总是选择它。

第二Tomcat池DataSource可用,我们将使用它。

第三Commons DBCP2可用,我们就使用它。

最后HikariCP、Tomcat 和 DBCP2 都不可用,而 Oracle UCP 可用,我们就使用它。

       如果使用spring-boot-starter-jdbc或spring-boot-starter-data-JPA“starters”,自动使用的就是HikariCP。

当然也可以指定:

#要使用的连接池实现的完全限定名称。默认情况下,它是从类路径中自动检测到的。spring.datasource.type=

支持的连接池DataSourceBuilder有:

HikariCP

Tomcat pooling Datasource

Commons DBCP2

Oracle UCP & OracleDataSource

Spring Framework’s SimpleDriverDataSource

H2 JdbcDataSource

PostgreSQL PGSimpleDataSource


连接到JNDI数据源

       在以前的时候,我们的应用是部署在外部的应用服务器容器中的,我们可以使用应用程序服务器的内置功能配置和管理数据源,并使用JNDI(Java Naming and Directory Interface,Java命名和目录接口) 访问它。

       spring.datasource.jndi-name属性可以替代spring.datasource.url,其实也就是url连接信息配置到了应用服务器中,通过JNDI去查找到了url等信息。

image.png

例如,下面的部分application.properties显示了如何访问定义的JBoss AS DataSource:

spring.datasource.jndi-name=java:jboss/datasources/customers

总结:

       通过添加驱动依赖和配置url等连接信息,再加上SpringBoot自动配置的一些东西,就可以实现对数据库的连接及操作!

       明天我们抽时间看下多数据源怎么配置与使用!

       see you 特猫绒!


END

相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
4天前
|
Java 关系型数据库 MySQL
【MySQL × SpringBoot 突发奇想】全面实现流程 · xlsx文件,Excel表格导入数据库的接口(下)
【MySQL × SpringBoot 突发奇想】全面实现流程 · xlsx文件,Excel表格导入数据库的接口
15 0
|
4天前
|
Java 关系型数据库 MySQL
【MySQL × SpringBoot 突发奇想】全面实现流程 · xlsx文件,Excel表格导入数据库的接口(上)
【MySQL × SpringBoot 突发奇想】全面实现流程 · xlsx文件,Excel表格导入数据库的接口
20 0
|
2天前
|
NoSQL Shell MongoDB
NoSQL数据使用指令和引擎连接数据库实例
【5月更文挑战第8天】本文介绍了MongoDB的本地使用和常用操作,包括通过mongo shell连接数据库、显示数据库和集合,以及副本集设置。最后提到了MongoDB的日志功能和顶点集的使用,如capped collection的创建和管理。
19 3
|
2天前
|
Java 数据处理 流计算
实时计算 Flink版产品使用合集之可以通过JDBC连接器来连接Greenplum数据库吗
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
12 1
|
3天前
|
Java 关系型数据库 MySQL
MySql数据库级别MD5加密java MD5加密解密工具包
MySql数据库级别MD5加密java MD5加密解密工具包
|
4天前
|
前端开发 关系型数据库 MySQL
SpringBoot-----从前端更新数据到MySql数据库
SpringBoot-----从前端更新数据到MySql数据库
11 1
|
4天前
|
前端开发 关系型数据库 MySQL
【MySQL × SpringBoot 突发奇想】全面实现流程 · 数据库导出Excel表格文件的接口
【MySQL × SpringBoot 突发奇想】全面实现流程 · 数据库导出Excel表格文件的接口
26 0
|
4天前
|
SQL Java 数据库连接
Java一分钟之-JDBC:Java数据库连接基础
【5月更文挑战第14天】JDBC是Java与关系数据库交互的API,常见问题包括资源管理、SQL注入和性能优化。易错点涉及驱动加载、空指针异常和事务管理。避免这些问题的方法有使用try-with-resources自动关闭资源、预编译PreparedStatement以防止SQL注入,以及正确管理事务。示例代码展示了基本的JDBC连接和查询。在实际开发中,推荐使用ORM框架如Hibernate或JPA来简化数据库操作。
14 1
|
4天前
|
关系型数据库 MySQL 数据库
mysql 设置环境变量与未设置环境变量连接数据库的区别
设置与未设置MySQL环境变量在连接数据库时主要区别在于命令输入方式和系统便捷性。设置环境变量后,可直接使用`mysql -u 用户名 -p`命令连接,而无需指定完整路径,提升便利性和灵活性。未设置时,需输入完整路径如`C:\Program Files\MySQL\...`,操作繁琐且易错。为提高效率和减少错误,推荐安装后设置环境变量。[查看视频讲解](https://www.bilibili.com/video/BV1vH4y137HC/)。
24 3
mysql 设置环境变量与未设置环境变量连接数据库的区别
|
4天前
|
移动开发 前端开发 Java
springboot数据库回滚失败原因
springboot数据库回滚失败原因
10 1