6.1.2 配置数据源
此时,Taco Cloud 应用程序仍未完成,但是在准备部署应用程序之前,还有几个章节要处理一些问题。因此,作为数据源使用的嵌入式 H2 数据库非常适合目前为止需要的一切。但是,一旦将应用程序投入生产,可能需要考虑一个更持久的数据库解决方案。
虽然可以显式地配置 DataSource bean,但这通常是不必要的。相反,通过配置属性为数据库配置 URL 和凭据更简单。例如,如果打算开始使用 MySQL 数据库,可以将以下配置属性添加到 application.yml:
spring:
datasource:
url: jdbc:mysql://localhost/tacocloud
username: tacodb
password: tacopassword
虽然需要将适当的 JDBC 驱动程序添加到构建中,但通常不需要指定 JDBC 驱动程序类;Spring Boot 可以从数据库 URL 的结构中找到它。但如果有问题,可以试着设置 spring.datasource.driver-class-name 属性:
spring:
datasource:
url: jdbc:mysql://localhost/tacocloud
username: tacouser
password: tacopassword
driver-class-name: com.mysql.jdbc.Driver
Spring Boot 在自动配置数据源 bean 时使用此连接配置。这个数据源 bean 将使用 HikariCP 连接池(如果在服务器上可用)。如果没有,Spring Boot 将查找并使用类路径上某个其他连接池实现:
- Tomcat JDBC 连接池
- Apache Commons DBCP2
虽然这些是通过自动配置提供的唯一连接池选项,但是您随时都可以显式配置数据源 bean,以使用其他连接池。
在本章前面,我们建议有一种方法可以指定,应用程序启动时要运行的数据库初始化脚本。在这种情况下,spring.datasource.schema 和spring.datasource.data 属性被证明非常有用:
spring:
datasource:
schema:
- order-schema.sql
- ingredient-schema.sql
- taco-schema.sql
- user-schema.sql
data:
- ingredients.sql
可能显式数据源配置不是您的风格,您更喜欢在 JNDI 中配置数据源,并让 Spring 从那里查找它。在这种情况下,通过配置 spring.datasource.jndi-name 来设置数据源:
spring:
datasource:
jndi-name: java:/comp/env/jdbc/tacoCloudDS
如果设置了 spring.datasource.jndi-name 属性,那么其他数据源的连接属性(如果设置了)会被忽略。