2025/2/27 上午《尚硅谷》——spring管理数据源和引入外部属性文件步骤以及关键文件源码

1. pom.xml 文件

<!-- MySQL驱动 -->
<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.0.31</version>
</dependency>

2. spring-datasource.xml 文件

<?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
           http://www.springframework.org/schema/context/spring-context.xsd">

    <!-- 加载外部属性文件 -->
    <context:property-placeholder location="classpath:jdbc.properties"/>

    <!-- 配置 Druid 数据源 -->
    <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>

笔记与提示:

  • 加载外部属性文件<context:property-placeholder> 标签用于加载外部的属性文件(如 jdbc.properties),这样可以在 XML 配置文件中使用 ${} 来引用属性文件中的值。

  • Druid 数据源配置DruidDataSource 是 Druid 连接池的核心类。通过配置 driverClassNameurlusername 和 password 等属性,可以创建一个数据库连接池。

  • jdbc.properties 文件:需要在 src/main/resources 目录下创建一个 jdbc.properties 文件,内容如下:

jdbc.driver=com.mysql.cj.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/your_database_name?useSSL=false&serverTimezone=UTC
jdbc.username=your_username
jdbc.password=your_password

3. 测试代码

package com.atguigu.spring.test;

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 DateSourceTest {

    @Test
    public void testDateSource() throws SQLException {
        ApplicationContext ioc = new ClassPathXmlApplicationContext("spring-datasource.xml");
        DruidDataSource dataSource = ioc.getBean(DruidDataSource.class);
        System.out.println(dataSource.getConnection());
    }
}

4. 测试输出

二月 27, 2025 9:27:14 上午 com.alibaba.druid.support.logging.JakartaCommonsLoggingImpl info
信息: {dataSource-1} inited
com.mysql.cj.jdbc.ConnectionImpl@3bbc39f8

进程已结束,退出代码为 0

笔记与提示:

  • ApplicationContextApplicationContext 是 Spring 的核心接口之一,用于加载 Spring 配置文件并管理 Bean 的生命周期。

  • ClassPathXmlApplicationContext:这是 ApplicationContext 的一个实现类,用于从类路径下加载 XML 配置文件。

  • DruidDataSource:通过 ioc.getBean(DruidDataSource.class) 从 Spring 容器中获取配置好的 DruidDataSource 实例。

  • dataSource.getConnection():获取数据库连接,如果连接成功,说明数据源配置正确。

5. 常见问题与解决方案

DruidDataSource 类未找到——解决方案:检查 pom.xml 文件中是否已正确添加 druid 依赖,并且版本号正确。