Skip to content

6.1.2 Cấu hình một nguồn dữ liệu (DataSource)

Tại thời điểm này, ứng dụng Taco Cloud vẫn chưa hoàn chỉnh, nhưng bạn sẽ còn vài chương nữa để hoàn thiện nó trước khi sẵn sàng triển khai. Do đó, cơ sở dữ liệu H2 nhúng mà bạn đang sử dụng hiện tại là hoàn toàn phù hợp với nhu cầu của bạn — ít nhất là ở thời điểm hiện tại. Nhưng khi đưa ứng dụng vào môi trường sản xuất, bạn có thể sẽ muốn cân nhắc một giải pháp cơ sở dữ liệu lâu dài hơn.

Mặc dù bạn có thể cấu hình một bean DataSource theo cách thủ công, nhưng điều đó thường không cần thiết. Thay vào đó, việc cấu hình URL và thông tin đăng nhập cho cơ sở dữ liệu thông qua các thuộc tính cấu hình là cách đơn giản hơn. Ví dụ, nếu bạn bắt đầu sử dụng cơ sở dữ liệu MySQL, bạn có thể thêm các thuộc tính cấu hình sau vào application.yml:

yaml
spring:
  datasource:
    url: jdbc:mysql://localhost/tacocloud
    username: tacodb
    password: tacopassword

Mặc dù bạn cần thêm driver JDBC phù hợp vào hệ thống build, nhưng bạn không cần thiết phải chỉ định lớp driver JDBC — Spring Boot có thể tự động suy ra từ cấu trúc của URL cơ sở dữ liệu. Tuy nhiên, nếu có vấn đề, bạn có thể thử thiết lập thuộc tính spring.datasource.driver-class-name như sau:

yaml
spring:
  datasource:
    url: jdbc:mysql://localhost/tacocloud
    username: tacouser
    password: tacopassword
    driver-class-name: com.mysql.jdbc.Driver

Spring Boot sẽ sử dụng thông tin kết nối này khi tự động cấu hình bean DataSource. Bean DataSource này sẽ được quản lý theo cơ chế connection pool bằng thư viện HikariCP nếu nó có trong classpath. Nếu không có, Spring Boot sẽ tìm và sử dụng một trong các thư viện connection pool sau nếu có trong classpath:

  • Tomcat JDBC Connection Pool
  • Apache Commons DBCP2

Mặc dù đây là những tùy chọn connection pool duy nhất mà cấu hình tự động của Spring Boot hỗ trợ, bạn hoàn toàn có thể cấu hình thủ công một bean DataSource để sử dụng bất kỳ thư viện connection pool nào bạn muốn.

Trước đó trong chương này, chúng ta đã gợi ý rằng có thể có cách để chỉ định các script khởi tạo cơ sở dữ liệu khi ứng dụng khởi động. Trong trường hợp đó, các thuộc tính spring.datasource.schemaspring.datasource.data sau đây sẽ rất hữu ích:

yaml
spring:
  datasource:
    schema:
    - order-schema.sql
    - ingredient-schema.sql
    - taco-schema.sql
    - user-schema.sql
    data:
    - ingredients.sql

Có thể bạn không thích kiểu cấu hình nguồn dữ liệu một cách tường minh. Thay vào đó, có thể bạn muốn cấu hình nguồn dữ liệu của mình trong Java Naming and Directory Interface (JNDI) http://mng.bz/MvEo và để Spring truy vấn nó từ đó. Trong trường hợp đó, hãy cấu hình thuộc tính spring.datasource.jndi-name như sau:

yaml
spring:
  datasource:
    jndi-name: java:/comp/env/jdbc/tacoCloudDS

Nếu bạn thiết lập thuộc tính spring.datasource.jndi-name, thì các thuộc tính kết nối khác của datasource (nếu có thiết lập) sẽ bị bỏ qua.

Released under the MIT License.