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 属性,那么其他数据源的连接属性(如果设置了)会被忽略。

results matching ""

    No results matching ""