Spring Boot中MS SQL Server数据源Java配置Bean定义咨询
配置MS SQL Server的DataSource Java Config方案
我明白你之前用OracleDataSource配置起来特别顺手,现在切换到MS SQL Server找不到对应的Bean配置方式对吧?别着急,下面给你两种常用的配置方案,都是实际开发里常用的:
方案一:使用微软官方的SQLServerDataSource
首先得确保项目里引入了MS SQL Server的JDBC驱动依赖(以Maven为例,在pom.xml中添加):
<dependency> <groupId>com.microsoft.sqlserver</groupId> <artifactId>mssql-jdbc</artifactId> <version>12.4.1.jre11</version> <!-- 版本可根据你的JDK版本调整 --> </dependency>
然后在配置类里就能像配置Oracle那样定义DataSource Bean了,只是换成SQLServerDataSource:
import com.microsoft.sqlserver.jdbc.SQLServerDataSource; import javax.sql.DataSource; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @Configuration public class DataSourceConfig { // 建议通过@Value从配置文件读取这些参数,比如application.properties private String username = "你的数据库用户名"; private String password = "你的数据库密码"; private String url = "jdbc:sqlserver://localhost:1433;databaseName=你的数据库名;encrypt=true;trustServerCertificate=true"; @Bean public DataSource dataSource() { SQLServerDataSource dataSource = new SQLServerDataSource(); dataSource.setUser(username); dataSource.setPassword(password); dataSource.setURL(url); // 如果你需要类似Oracle的缓存/连接池设置,可以添加对应参数 // 不过原生SQLServerDataSource的连接池性能一般,更推荐方案二 dataSource.setMaxPoolSize(10); dataSource.setMinPoolSize(2); return dataSource; } }
方案二:使用HikariCP连接池(推荐)
实际项目里几乎都会用连接池优化数据库连接性能,HikariCP是Spring Boot默认的连接池,配置简单且性能出色:
如果是Spring Boot项目,HikariCP默认已引入,只需确保添加MS SQL驱动依赖即可:
<dependency> <groupId>com.microsoft.sqlserver</groupId> <artifactId>mssql-jdbc</artifactId> <version>12.4.1.jre11</version> </dependency>
然后配置DataSource Bean:
import com.zaxxer.hikari.HikariDataSource; import javax.sql.DataSource; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @Configuration public class DataSourceConfig { private String username = "你的数据库用户名"; private String password = "你的数据库密码"; private String jdbcUrl = "jdbc:sqlserver://localhost:1433;databaseName=你的数据库名;encrypt=true;trustServerCertificate=true"; @Bean public DataSource dataSource() { HikariDataSource hikariDataSource = new HikariDataSource(); hikariDataSource.setJdbcUrl(jdbcUrl); hikariDataSource.setUsername(username); hikariDataSource.setPassword(password); // 可根据业务需求配置Hikari的优化参数 hikariDataSource.setMaximumPoolSize(10); hikariDataSource.setMinimumIdle(2); hikariDataSource.setConnectionTimeout(30000); hikariDataSource.setDriverClassName("com.microsoft.sqlserver.jdbc.SQLServerDriver"); return hikariDataSource; } }
几个实用注意点
- MS SQL Server的JDBC URL格式要留意:
jdbc:sqlserver://[主机地址]:[端口];databaseName=[数据库名];,测试环境如果不需要加密,可添加encrypt=false,或者加trustServerCertificate=true跳过证书验证(新版驱动默认加密为true) - 驱动类名是
com.microsoft.sqlserver.jdbc.SQLServerDriver,不过新版驱动中Hikari可以自动识别,无需显式指定 - 如果你用的是Spring Boot,还能更省心:直接在
application.properties里配置参数,Spring会自动帮你生成DataSource Bean,示例如下:
spring.datasource.url=jdbc:sqlserver://localhost:1433;databaseName=你的数据库名;encrypt=true;trustServerCertificate=true spring.datasource.username=你的数据库用户名 spring.datasource.password=你的数据库密码 spring.datasource.driver-class-name=com.microsoft.sqlserver.jdbc.SQLServerDriver # Hikari连接池配置 spring.datasource.hikari.maximum-pool-size=10 spring.datasource.hikari.minimum-idle=2
这样是不是就和你之前配置Oracle的体验差不多啦?
内容的提问来源于stack exchange,提问作者Avhi
相关产品推荐
相关产品推荐

