Spring-配置数据源

发布时间:2024年01月23日
一、引子

我们在上一篇已经了解了Spring-配置文件的相关内容,但是我们配置的所有类都是我们定义的,我们似乎很轻松地把这些类的创建交给Spring容器来管理了。那么,我们是否能配置一些不是由我们定义的类呢,把这些外部的类也交由Spring容器来管理?我们是否很快想到了一个我们完成Web项目的对象——数据源。我们可以先回顾一下我们在JavaWeb专栏介绍数据库连接池的内容:我们声明了数据库的相关参数:驱动、地址、用户名、密码,之后我们从配置文件中读取到这些配置,然后调用连接池的方法来获取一个数据源,通过数据源来获取数据库连接,以此来降低在原生JDBC操作中频繁创建连接又释放资源造成的性能压力。

关键来了:我们怎么运用上一节配置文件的知识在Spring中优雅地创建这样一个数据源呢?

二、快速实现

通过引子的最后一段话,我们可以总结出我们需要做以下几件事:?

1、引入新的依赖:数据库驱动,连接池
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.16</version>
        </dependency>

        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid</artifactId>
            <version>1.2.6</version>
        </dependency>
2、声明数据库连接信息
jdbc.driver=com.mysql.cj.jdbc.Driver
jdbc.url=jdbc:mysql://114.115.xxx
jdbc.username=xx
jdbc.password=xxxx
3、在xml配置文件中注册Bean,并完成DI。注意这里引入了JDBC信息的properties文件
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:context="http://www.springframework.org/schema/context"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd">

    <context:property-placeholder location="jdbc.properties"/>

    <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource">
        <property name="driverClassName" value="${jdbc.driver}"/>
        <property name="url" value="${jdbc.url}"/>
        <property name="username" value="${jdbc.username}"/>
        <property name="password" value="${jdbc.password}"/>
    </bean>

</beans>
4、于是,我们可以测试代码中直接从Spring容器中索要数据源对象,并从数据源中拿到一个Connection对象。
import com.alibaba.druid.pool.DruidDataSource;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import java.sql.SQLException;

public class DataSourceTest {

    @Test
    public void testDataSource() throws SQLException {
        ApplicationContext ioc = new ClassPathXmlApplicationContext("spring-datasource.xml");
        DruidDataSource dataSource = ioc.getBean(DruidDataSource.class);
        System.out.println(dataSource.getConnection()); // com.mysql.cj.jdbc.ConnectionImpl@4ea5b703
    }
}

至此,我们发现,使用Spring配置数据源与我们使用原生的Java代码配置数据源的做法本质上是一样的。我们似乎又前进了一小步,让我先停下来思考一下:如果所有类都要手动地在xml配置文件里进行声明,是否会造成xml文件的"爆炸"呢?当然Spring官方也会考虑到一点,请读者关注下一篇文章,我们将介绍Spring框架提供的一个更优的做法来创建对象——Spring-注解开发。

文章来源:https://blog.csdn.net/buzzkiller/article/details/135760907
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。