软件编程
位置:首页>> 软件编程>> java编程>> SpringBoot快速配置数据源的方法

SpringBoot快速配置数据源的方法

作者:拾阶求上  发布时间:2023-07-28 13:22:42 

标签:SpringBoot,配置,数据源

SpringBoot如何快速配置数据源;有如下两种方式:

  1. 通过spring-boot-starter-jdbc快速配置数据源

  2. 自定义数据源DataSource

首先我们需要明确数据源DataSource有什么作用:

  1. 通过DataSource可以获取数据库连接Connection

  2. 通过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

0
投稿

猜你喜欢

手机版 软件编程 asp之家 www.aspxhome.com