上一篇
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的自动化配置能显著减少样板代码,建议优先采用,务必定期审计数据库配置,防范凭证泄露风险。
