SpringBoot快速配置数据源的方法
作者:拾阶求上 发布时间:2023-07-28 13:22:42
SpringBoot如何快速配置数据源;有如下两种方式:
通过spring-boot-starter-jdbc快速配置数据源
自定义数据源DataSource
首先我们需要明确数据源DataSource有什么作用:
通过DataSource可以获取数据库连接Connection
通过DataSource创建JdbcTemplate操作数据库
实际项目中,我们在配置数据源的时候会指定数据库连接池,比如流行的Hikari(spring默认的数据库连接池)、C3p0、Dbcp2以及阿里巴巴的Druid。
一、使用数据库连接池
应用在操作数据库的时候,直接从数据库连接池获取连接,而不需要每次创建新的连接。
至于数据库连接池的好处,总结就是: 应用创建和销毁连接的代价是很大的,使用数据库连接池可以很好的复用连接,节省开销,方便管理,简化开发。
可能有些场景我们不想使用SpringBoot JDBC默认的数据源,我需要引入数据库连接池,然后自定义数据源,指定数据源类型。
下面以Dbcp2数据库连接池配置数据源为例。
二、配置依赖
引入dbcp2的数据库连接池已经相关依赖。
<!-- dbcp2数据库连接池 -->
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-dbcp2</artifactId>
<version>2.7.0</version>
</dependency>
<!--数据库驱动-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.18</version>
</dependency>
<!-- 提供操作数据库的标准口径 -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>5.2.2.RELEASE</version>
<scope>compile</scope>
</dependency>
三、编写配置项
在application.properties文件中配置数据库连接属性。
customize.datasource.url=jdbc:mysql://localhost:3306/blue?serverTimezone=UTC
customize.datasource.username=root
customize.datasource.password=wan4380797
customize.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
四、自定义DataSource
import org.apache.commons.dbcp2.BasicDataSource;
@Configuration
public class Dbcp2DataSource {
@Bean("myDbcp2DataSource")
@ConfigurationProperties(prefix = "customize.datasource")
public DataSource getDataSource(){
return DataSourceBuilder.create().type(BasicDataSource.class).build();
}
}
这边我们可以看到我们创建的DataSource类型为BasicDataSource类型的。并且BasicDataSource来源于之前配置的dbcp2依赖的jar包中。
五、调用验证
下面我们使用junit来验证以下数据源配置的正确与否:
@SpringBootTest
@RunWith(SpringRunner.class)
public class JdbcCustomizeDatasourceApplicationTests {
@Autowired
@Qualifier("myDbcp2DataSource")
private DataSource dataSource;
@Test
public void springJdbcTemplateTest(){
try{
JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);
String queryStr = "select * from student";
List<Student> resultList = new ArrayList<>();
jdbcTemplate.query(queryStr, (ResultSet resultSet)->{
Student student = new Student();
student.setId(resultSet.getString("id"));
student.setStudentId(resultSet.getString("student_id"));
student.setStudentName(resultSet.getString("student_name"));
student.setAge(resultSet.getInt("age"));
resultList.add(student);
});
resultList.forEach((Student student) -> System.out.println(student));
}catch (Exception exception){
exception.printStackTrace();
}
}
}
来源:https://cn-blogs.cn/archives/9215.html?utm_source=tuicool&utm_medium=referral
猜你喜欢
- 一、LinkedList 的剖白大家好,我是 LinkedList,和 ArrayList 是同门师兄弟,但我俩练的内功却完全不同。师兄练的
- Springboot 在普通类型注入Service或mapper最近遇到一个难题(大佬可能感觉这太简单了把),对于我这样的小白来说,确实有些
- 配置文件context-path的坑context-path: /manage 这个配置加入后会导致访问spring的页面都需要加这个/ma
- 1.短信平台购买次数地址https://market.aliyun.com/products/57000002/cmapi00046920.
- 茫茫人海千千万万,感谢这一秒你看到这里。希望我的能对你的有所帮助!共勉!愿你在未来的日子,保持热爱,奔赴山海!Java基础知识(多态)多态因
- 其实以前我对Java的Struts框架没有具体认识,通过这篇文章,真的让我了解了框架的用处,好处。下拉框在Web开发中经常会使用到,下面我们
- 前言很久没有写关于 Spring 的文章了,最近在系统梳理 Dubbo 代码的过程中发现了 XML schema 这个被遗漏的知识点。由于工
- 整理文档,java 动态增加定时任务示例,直接上代码。import org.apache.tools.ant.util.DateUtils;
- 1.CAS1)CAS概念CAS时Compare And Swap缩写,即比较与交换是用于实现多线程同步的原子指令,它将内存位置的内容与给定值
- 本文实例讲述了C#中WinForm跨线程访问控件的实现方法,分享给大家供大家参考。具体实现方法如下:1、跨线程访问控件委托和类的定义usin
- 1、认识 Spring CacheSpring Cache是Spring提供的一整套缓存解决方案。它本身并不提供缓存实现,而是提供统一的接口
- 本文实例为大家分享了java实现递归菜单树的具体代码,供大家参考,具体内容如下1.表结构SET FOREIGN_KEY_CHECKS=0;-
- EasyTouch摇杆插件使用,先给大家展示下效果图:Demo展示双指缩放在电脑端无法掩饰,竖屏将就看看吧;插件名叫EasyTouch,有需
- 什么是XML?XML:可扩展标记语言。XML的作用:纯文本,兼容性强。和HTML的区别:xml: 主要用来处理、存储数据。无规定标签,可扩展
- 说起垃圾收集(Garbage Collection,GC),大部分人都把这项技术当做Java语言的伴生产物。事实上,GC的历史远比Java久
- 前言之前写过一篇关于配置中心对配置内容加密解密的介绍:《Spring Cloud构建微服务架构:分布式配置中心(加密解密) 》。在这篇文章中
- 在模板文件的表达式中,可以使用“${T(全限定类名).方法名(参数)}”这种格式来调用Java类的静态方法。开发环境:IntelliJ ID
- 最开始接触到相关的内容应该是从volatile关键字开始的吧,知道它可以保证变量的可见性,而且利用它可以实现读与写的原子操作。。。但是要实现
- 目标依赖<!-- poi工具类--> <dependency>
- 在开发的过程中,往往会需要在组件中添加一些按钮,用于执行一些自定义的操作。例如你有一个组件A,里面有一个List<Collider&g