上一篇                     
               
			  Spring如何配置数据库连接
- 数据库
- 2025-06-10
- 3055
 Spring通过
 
 
application.properties或
 application.yml配置文件定义数据库连接,需设置驱动类名、数据库URL、用户名和密码,Spring Boot会自动读取并注入
 DataSource。
在Spring框架中连接数据库配置文件是开发企业级应用的基础操作,通过正确配置数据源,Spring能高效管理数据库连接,提升应用的可维护性和安全性,下面详细介绍三种主流配置方式及最佳实践:
核心配置方式
XML配置(传统方式)
在applicationContext.xml中定义数据源:
<!-- 加载属性文件 -->
<context:property-placeholder location="classpath:db.properties"/>
<!-- 配置数据源 -->
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
    <property name="driverClassName" value="${db.driver}" />
    <property name="url" value="${db.url}" />
    <property name="username" value="${db.username}" />
    <property name="password" value="${db.password}" />
</bean> 
配套的 db.properties 文件:
db.driver=com.mysql.cj.jdbc.Driver db.url=jdbc:mysql://localhost:3306/mydb?useSSL=false&serverTimezone=UTC db.username=root db.password=your_secure_password
Java注解配置(推荐)
通过@Configuration类实现:

@Configuration
@PropertySource("classpath:db.properties")
public class AppConfig {
    @Value("${db.driver}")
    private String driver;
    @Value("${db.url}")
    private String url;
    @Value("${db.username}")
    private String username;
    @Value("${db.password}")
    private String password;
    @Bean
    public DataSource dataSource() {
        DriverManagerDataSource dataSource = new DriverManagerDataSource();
        dataSource.setDriverClassName(driver);
        dataSource.setUrl(url);
        dataSource.setUsername(username);
        dataSource.setPassword(password);
        return dataSource;
    }
} 
Spring Boot自动化配置
在application.yml中配置(无需代码):
spring:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost:3306/mydb?useSSL=false&serverTimezone=UTC
    username: root
    password: your_secure_password
    # 连接池配置(可选)
    hikari:
      maximum-pool-size: 10
      connection-timeout: 3000 
安全最佳实践
-  敏感信息加密 - 使用Jasypt等工具加密密码: spring: datasource: password: ENC(加密后的字符串)
- 启动时添加密钥:-Djasypt.encryptor.password=your_master_key
 
- 使用Jasypt等工具加密密码: 
-  环境隔离  - 通过@Profile区分环境配置:@Profile("prod") @Bean public DataSource prodDataSource() { ... }
 
- 通过
-  避免硬编码 永远不要将密码直接写在代码中,始终使用外部属性文件。 
常见问题解决
| 问题现象 | 原因 | 解决方案 | 
|---|---|---|
| No suitable driver found | 驱动未加载或URL格式错误 | 检查JDBC URL和 driver-class-name | 
| Access denied for user | 用户名/密码错误或权限不足 | 验证数据库凭据及远程访问权限 | 
| 连接超时 | 网络问题或连接池配置不当 | 调整连接池参数(如 maximum-pool-size) | 
权威建议
- 连接池选择:生产环境推荐使用HikariCP(Spring Boot默认)或Druid,避免原生DriverManagerDataSource。
- 配置验证:通过DataSource#getConnection()测试配置:@Autowired DataSource dataSource; public void testConnection() throws SQLException { try (Connection conn = dataSource.getConnection()) { System.out.println("Connection successful!"); } }
- 遵循规范:数据库账号需遵循最小权限原则,禁止使用root账户。
引用说明参考Spring官方文档Data Access及Oracle JDBC标准,安全实践部分依据OWASP《安全配置指南》。
通过以上步骤,您可高效、安全地在Spring中集成数据库配置,实际开发中,Spring Boot的自动化配置能显著减少样板代码,建议优先采用,务必定期审计数据库配置,防范凭证泄露风险。
 
 
 
			