Skip to content

6.3.1 Định nghĩa các thuộc tính theo profile

Một cách để định nghĩa các thuộc tính riêng cho từng profile là tạo thêm một file YAML hoặc properties chỉ chứa các thuộc tính dành cho môi trường production. Tên của file nên tuân theo quy ước sau: application-{tên profile}.yml hoặc application-{tên profile}.properties. Sau đó, bạn có thể chỉ định các thuộc tính cấu hình phù hợp với profile đó. Ví dụ, bạn có thể tạo một file mới tên là application-prod.yml chứa các thuộc tính sau:

yaml
spring:
  datasource:
    url: jdbc:mysql://localhost/tacocloud
    username: tacouser
    password: tacopassword
logging:
  level:
    tacos: WARN

Một cách khác để chỉ định các thuộc tính theo profile chỉ áp dụng với cấu hình YAML. Cách này bao gồm việc đặt các thuộc tính theo profile bên cạnh các thuộc tính không theo profile trong file application.yml, được phân tách bằng ba dấu gạch ngang (---) và thuộc tính spring.profiles để chỉ định tên profile. Khi áp dụng các thuộc tính production vào application.yml theo cách này, toàn bộ file application.yml sẽ trông như sau:

yaml
logging:
  level:
    tacos: DEBUG

---
spring:
  profiles: prod

  datasource:
    url: jdbc:mysql://localhost/tacocloud
    username: tacouser
    password: tacopassword

logging:
  level:
    tacos: WARN

Như bạn thấy, file application.yml này được chia thành hai phần bởi một nhóm ba dấu gạch ngang (---). Phần thứ hai chỉ định giá trị cho spring.profiles, cho biết rằng các thuộc tính sau đó áp dụng cho profile prod. Trong khi đó, phần đầu tiên không chỉ định giá trị cho spring.profiles. Do đó, các thuộc tính trong phần này sẽ được áp dụng cho tất cả các profile hoặc được xem là mặc định nếu profile đang hoạt động không định nghĩa các thuộc tính đó.

Bất kể profile nào đang được kích hoạt khi ứng dụng chạy, mức độ log cho package tacos sẽ được đặt thành DEBUG bởi thuộc tính trong profile mặc định. Nhưng nếu profile tên là prod được kích hoạt, thì thuộc tính logging.level.tacos sẽ bị ghi đè thành WARN. Tương tự, nếu profile prod được kích hoạt, thì các thuộc tính datasource sẽ được cấu hình để sử dụng cơ sở dữ liệu MySQL bên ngoài.

Bạn có thể định nghĩa các thuộc tính cho nhiều profile tùy ý bằng cách tạo thêm các file YAML hoặc properties được đặt tên theo mẫu application-{tên profile}.yml hoặc application-{tên profile}.properties. Hoặc, nếu bạn muốn, hãy gõ thêm ba dấu gạch ngang trong file application.yml cùng với thuộc tính spring.profiles khác để chỉ định tên profile. Sau đó thêm tất cả các thuộc tính riêng theo profile mà bạn cần. Mặc dù không có lợi thế rõ ràng giữa hai cách tiếp cận này, bạn có thể thấy rằng việc đặt tất cả các cấu hình profile vào một file YAML duy nhất sẽ hiệu quả hơn khi số lượng thuộc tính ít, trong khi tách riêng từng file theo profile sẽ phù hợp hơn khi bạn có nhiều thuộc tính.

Released under the MIT License.