最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
SpringBoot如何快速配置数据源 SpringBoot快速配置数据源方法
时间:2020-10-16 编辑:袖梨 来源:一聚教程网
SpringBoot如何快速配置数据源?本篇文章小编给大家分享一下SpringBoot快速配置数据源方法,小编觉得挺不错的,现在分享给大家供大家参考,有需要的小伙伴们可以来看看。
SpringBoot如何快速配置数据源;有如下两种方式:
通过spring-boot-starter-jdbc快速配置数据源
自定义数据源DataSource
首先我们需要明确数据源DataSource有什么作用:
通过DataSource可以获取数据库连接Connection
通过DataSource创建JdbcTemplate操作数据库
实际项目中,我们在配置数据源的时候会指定数据库连接池,比如流行的Hikari(spring默认的数据库连接池)、C3p0、Dbcp2以及阿里巴巴的Druid。
一、使用数据库连接池
应用在操作数据库的时候,直接从数据库连接池获取连接,而不需要每次创建新的连接。
至于数据库连接池的好处,总结就是: 应用创建和销毁连接的代价是很大的,使用数据库连接池可以很好的复用连接,节省开销,方便管理,简化开发。
可能有些场景我们不想使用SpringBoot JDBC默认的数据源,我需要引入数据库连接池,然后自定义数据源,指定数据源类型。
下面以Dbcp2数据库连接池配置数据源为例。
二、配置依赖
引入dbcp2的数据库连接池已经相关依赖。
org.apache.commons commons-dbcp2 2.7.0 mysql mysql-connector-java 8.0.18 org.springframework spring-jdbc 5.2.2.RELEASE compile
三、编写配置项
在apppcation.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"; ListresultList = 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(); } } }
-
下一个: 基于Java信号量解决死锁过程代码解析
相关文章
- SpringBoot自定义bean绑定解析 10-24
- Javaweb工程运行报错HTTP Status 404解决教程 10-20
- JAVA获取jvm和操作系统相关信息方法 10-20
- BeanFactory和FactoryBean的区别讲解 10-20
- 微信小程序的宿主环境实现教程 10-10
- dispatchEvent解决重叠元素响应事件教程 10-10