在上篇文章中,我们学习了SpringBoot的内嵌数据库,最后的时候我们用到了一个属性来进行本地持久化:
spring.datasource.url=jdbc:h2:file:~/.h2/h2db
这个url其实就是一个数据库的连接地址。未设置spring.datasource.url属性来指定 URL的话,Spring Boot 会尝试自动配置嵌入式数据库。
配置数据源连接数据库
Java的javax.sql.DataSource提供了处理数据库连接的标准方法。下面我们来连接一下mysql数据库,第一件事肯定是先导入驱动依赖:
<dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId></dependency>
注意这里的版本要和服务器的一样,比如,mysql8就得用8.0以上。
我们可以使用URL以及一些凭据来实现连接生产数据库,例如:
#####################datasource#####################spring.datasource.url=jdbc:mysql://127.0.0.1:3306/xinghua?useSSL=false&characterEncoding=utf-8&allowPublicKeyRetrieval=truespring.datasource.username=rootspring.datasource.password=rootspring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
启动打印出来看看看看:
importjavax.sql.DataSource; privateDataSourcedataSource; value="/showDataSource") (publicStringshowDataSource() throwsSQLException { StringBuilderstr=newStringBuilder(); str.append("数据源信息 ->"+dataSource+"<br/>"); str.append("数据连接信息->"+dataSource.getConnection()+"<br/>"); returnstr.toString();
奥里给!看到了哇!就这么简单就连接成功了哈,我们访问昨天写的内存数据库的save方法,查看是否存到了表里:
OK!完美!这个表是在启动项目的时候就已经创建好了,可以看启动日志。之所以简单配置即可使用是因为很多东西SpringBoot已经默认配置好了:
通过DataSourceAutoConfifiguration配置了数据源DataSource
通过DataSourceTransactionManagerAutoConfiguration配置了事务管理器DataSourceTransactionManager
通过JdbcTemplateAutoConfiguration配置了一个JdbcTemplate,方便用于进行JDBC操作
一些其他的配置,有兴趣可以上官方文档查查:
比如下面这配置的意思就是:如果没有连接可用,这会将池设置为在抛出异常之前等待 10000 毫秒,将最大连接数限制为 50 并在从池中借用连接之前验证连接。
#如果没有可用的连接,则在引发异常之前要等待的毫秒数。spring.datasource.tomcat.max-wait=10000#可以同时从该池中分配的最大活动连接数。spring.datasource.tomcat.max-active=50#在从池中借用连接之前先对其进行验证。spring.datasource.tomcat.test-on-borrow=true
支持的连接池
Spring Boot 使用以下算法来选择特定实现:
首选HikariCP,因为它的性能和并发性。如果HikariCP可用,我们总是选择它。
第二Tomcat池DataSource可用,我们将使用它。
第三Commons DBCP2可用,我们就使用它。
最后HikariCP、Tomcat 和 DBCP2 都不可用,而 Oracle UCP 可用,我们就使用它。
如果使用spring-boot-starter-jdbc或spring-boot-starter-data-JPA“starters”,自动使用的就是HikariCP。
当然也可以指定:
#要使用的连接池实现的完全限定名称。默认情况下,它是从类路径中自动检测到的。spring.datasource.type=
支持的连接池DataSourceBuilder有:
HikariCP
Tomcat pooling Datasource
Commons DBCP2
Oracle UCP & OracleDataSource
Spring Framework’s SimpleDriverDataSource
H2 JdbcDataSource
PostgreSQL PGSimpleDataSource
连接到JNDI数据源
在以前的时候,我们的应用是部署在外部的应用服务器容器中的,我们可以使用应用程序服务器的内置功能配置和管理数据源,并使用JNDI(Java Naming and Directory Interface,Java命名和目录接口) 访问它。
spring.datasource.jndi-name属性可以替代spring.datasource.url,其实也就是url连接信息配置到了应用服务器中,通过JNDI去查找到了url等信息。
例如,下面的部分application.properties显示了如何访问定义的JBoss AS DataSource:
spring.datasource.jndi-name=java:jboss/datasources/customers
总结:
通过添加驱动依赖和配置url等连接信息,再加上SpringBoot自动配置的一些东西,就可以实现对数据库的连接及操作!
明天我们抽时间看下多数据源怎么配置与使用!
see you 特猫绒!
END