Spring配置数据源流程与作用详解
什么是数据源
在编写Java Web应用时,我们经常需要连接数据库。而Spring提供了JdbcTemplate等API帮助我们对数据库进行操作。但是在使用这些API之前我们需要先获得一个数据源(DataSource)对象。数据源是一个能够建立数据库连接的工厂,它将数据库的连接细节封装了起来,同时提供了有效,可重复的数据库连接。
Spring配置数据源
Spring可以和大部分的数据库连接池进行集成。这些数据库连接池包括:
* Apache Commons DBCP
* BoneCP
* C3P0
* HikariCP
* Tomcat JDBC Pool
本文以集成Apache Commons DBCP为例描述Spring如何配置数据源。
配置依赖
首先需要将Apache Commons DBCP连接池库加入项目依赖中。
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-dbcp2</artifactId>
<version>2.7.2</version>
</dependency>
配置数据源
在Spring的配置文件中,使用org.apache.commons.dbcp2.BasicDataSource
类创建数据源的Bean,其中需要配置数据库连接池参数,例如连接URL,用户名,密码等等。以下是一个示例配置:
<bean id="dataSource" class="org.apache.commons.dbcp2.BasicDataSource">
<property name="driverClassName" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/db_test"/>
<property name="username" value="root"/>
<property name="password" value="123456"/>
<!--初始化连接数-->
<property name="initialSize" value="5"/>
<!--连接池的最大值-->
<property name="maxTotal" value="50"/>
</bean>
其中:
* driverClassName
:驱动类的完整名称,例如MySQL驱动为com.mysql.jdbc.Driver
。
* url
:数据库连接URL。
* username
:连接数据库的用户名。
* password
:连接数据库的密码。
* initialSize
:连接池的初始化大小。
* maxTotal
:连接池的最大数量。
使用数据源
配置数据源后,在应用程序中就可以使用它了。我们可以直接将数据源对象注入到其他Bean中,例如一个JdbcTemplate对象,示例如下:
<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
<!--注入数据源对象-->
<property name="dataSource" ref="dataSource" />
</bean>
在Java代码中,使用JdbcTemplate对象来进行数据库操作:
@Autowired
private JdbcTemplate jdbcTemplate;
public void insertUser(User user) {
jdbcTemplate.update("INSERT INTO user VALUES(?, ?, ?)", user.getId(), user.getName(), user.getAge());
}
示例1:使用Spring连接MySQL数据库
下面给出一个使用Spring连接MySQL数据库的示例。
配置依赖
首先需要将MySQL驱动加入项目依赖中。
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.26</version>
</dependency>
配置数据源
在Spring的配置文件中,使用org.apache.commons.dbcp2.BasicDataSource
类创建数据源的Bean,其中需要配置MySQL连接的URL、用户名和密码。以下是一个示例配置:
<bean id="dataSource" class="org.apache.commons.dbcp2.BasicDataSource">
<property name="driverClassName" value="com.mysql.cj.jdbc.Driver"></property>
<property name="url" value="jdbc:mysql://localhost:3306/test"></property>
<property name="username" value="root"></property>
<property name="password" value="password"></property>
</bean>
使用数据源
配置数据源后,在应用程序中就可以使用它了。我们可以直接将数据源对象注入到其他Bean中,例如一个JdbcTemplate对象,示例如下:
<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
<property name="dataSource" ref="dataSource" />
</bean>
在Java代码中,使用JdbcTemplate对象来进行数据库操作:
@Autowired
private JdbcTemplate jdbcTemplate;
public List<User> listUsers() {
List<User> userList = jdbcTemplate.query("SELECT * FROM user",
new BeanPropertyRowMapper<User>(User.class));
return userList;
}
在示例中,使用JdbcTemplate查询了MySQL数据库中的用户表,并将查询结果映射成Java对象列表返回。
示例2:使用Spring连接Oracle数据库
下面给出一个使用Spring连接Oracle数据库的示例。
配置依赖
首先需要将Oracle驱动加入项目依赖中。
<dependency>
<groupId>com.oracle.ojdbc</groupId>
<artifactId>ojdbc8</artifactId>
<version>19.3.0.0</version>
</dependency>
配置数据源
与MySQL类似,也需要在Spring的配置文件中使用org.apache.commons.dbcp2.BasicDataSource
类创建Oracle连接的数据源对象,以下是一份示例配置:
<bean id="dataSource" class="org.apache.commons.dbcp2.BasicDataSource">
<property name="driverClassName" value="oracle.jdbc.driver.OracleDriver"></property>
<property name="url" value="jdbc:oracle:thin:@localhost:1521:orcl"></property>
<property name="username" value="scott"></property>
<property name="password" value="tiger"></property>
</bean>
使用数据源
在Java代码中,可以使用JdbcTemplate等API对Oracle数据库进行操作,示例如下:
@Autowired
private JdbcTemplate jdbcTemplate;
public List<User> listUsers() {
List<User> userList = jdbcTemplate.query("SELECT * FROM user",
new BeanPropertyRowMapper<User>(User.class));
return userList;
}
在示例中,使用JdbcTemplate查询了Oracle数据库中的用户表,并将查询结果映射成Java对象列表返回。
结论
本文介绍了Spring如何配置数据源,以及使用这些数据源进行MySQL和Oracle数据库操作的具体步骤。对于连接不同数据库的开发人员,可以按照本文提供的示例进行配置和操作。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Spring配置数据源流程与作用详解 - Python技术站