当前位置:首页 > 数据库 > 正文

Spring如何配置数据库连接

Spring通过 application.properties或 application.yml配置文件定义数据库连接,需设置驱动类名、数据库URL、用户名和密码,Spring Boot会自动读取并载入 DataSource。

在Spring框架中连接数据库配置文件是开发企业级应用的基础操作,通过正确配置数据源,Spring能高效管理数据库连接,提升应用的可维护性和安全性,下面详细介绍三种主流配置方式及最佳实践:


核心配置方式

XML配置(传统方式)

在applicationContext.xml中定义数据源:

配套的 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如何配置数据库连接 第1张

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


安全最佳实践

  1. 敏感信息加密

    • 使用Jasypt等工具加密密码: spring: datasource: password: ENC(加密后的字符串)
    • 启动时添加密钥:-Djasypt.encryptor.password=your_master_key
  2. 环境隔离

    Spring如何配置数据库连接 第2张

    • 通过@Profile区分环境配置: @Profile("prod") @Bean public DataSource prodDataSource() { ... }
    • 避免硬编码

      永远不要将密码直接写在代码中,始终使用外部属性文件。

    • 常见问题解决

      问题现象 原因 解决方案
      No suitable driver found 驱动未加载或URL格式错误 检查JDBC URL和driver-class-name
      Access denied for user 用户名/密码错误或权限不足 验证数据库凭据及远程访问权限
      连接超时 网络问题或连接池配置不当 调整连接池参数(如maximum-pool-size)


      权威建议

      1. 连接池选择:生产环境推荐使用HikariCP(Spring Boot默认)或Druid,避免原生DriverManagerDataSource。
      2. 配置验证:通过DataSource#getConnection()测试配置: @Autowired DataSource dataSource; public void testConnection() throws SQLException { try (Connection conn = dataSource.getConnection()) { System.out.println("Connection successful!"); } }
      3. 遵循规范:数据库账号需遵循最小权限原则,禁止使用root账户。

      引用说明参考Spring官方文档Data Access及Oracle JDBC标准,安全实践部分依据OWASP《安全配置指南》。

      通过以上步骤,您可高效、安全地在Spring中集成数据库配置,实际开发中,Spring Boot的自动化配置能显著减少样板代码,建议优先采用,务必定期审计数据库配置,防范凭证泄露风险。

      Spring如何配置数据库连接 第3张

0