6.3.2 Kích hoạt các profile
Thiết lập các thuộc tính riêng cho profile sẽ không có tác dụng gì nếu các profile đó không được kích hoạt. Vậy làm thế nào để kích hoạt một profile? Đơn giản chỉ cần đưa tên profile vào danh sách các tên profile được gán cho thuộc tính spring.profiles.active. Ví dụ, bạn có thể thiết lập nó trong application.yml như sau:
spring:
profiles:
active:
- prodNhưng đây có lẽ là cách tệ nhất để thiết lập một profile đang hoạt động. Nếu bạn thiết lập profile đang hoạt động trong application.yml, thì profile đó sẽ trở thành profile mặc định và bạn sẽ không đạt được lợi ích nào từ việc sử dụng các profile để tách biệt các thuộc tính dành riêng cho môi trường production và development. Thay vào đó, tôi khuyên bạn nên thiết lập profile đang hoạt động thông qua biến môi trường. Trên môi trường production, bạn sẽ thiết lập SPRING_PROFILES_ACTIVE như sau:
% export SPRING_PROFILES_ACTIVE=prodTừ thời điểm đó trở đi, bất kỳ ứng dụng nào được triển khai lên máy đó sẽ có profile prod đang hoạt động, và các thuộc tính cấu hình tương ứng sẽ được ưu tiên hơn các thuộc tính trong profile mặc định.
Nếu bạn đang chạy ứng dụng dưới dạng một tệp JAR thực thi, bạn cũng có thể thiết lập profile đang hoạt động thông qua đối số dòng lệnh như sau:
% java -jar taco-cloud.jar --spring.profiles.active=prodLưu ý rằng tên thuộc tính spring.profiles.active sử dụng từ số nhiều profiles. Điều này có nghĩa là bạn có thể chỉ định nhiều hơn một profile đang hoạt động. Thông thường, bạn sẽ làm điều này bằng một danh sách phân tách bởi dấu phẩy, như khi thiết lập bằng biến môi trường, như sau:
% export SPRING_PROFILES_ACTIVE=prod,audit,haNhưng trong YAML, bạn sẽ chỉ định nó dưới dạng danh sách như sau:
spring:
profiles:
active:
- prod
- audit
- haCũng đáng lưu ý rằng nếu bạn triển khai một ứng dụng Spring lên Cloud Foundry, một profile có tên là cloud sẽ tự động được kích hoạt cho bạn. Nếu Cloud Foundry là môi trường production của bạn, bạn sẽ muốn chắc chắn rằng các thuộc tính dành riêng cho production được chỉ định trong profile cloud.
Hóa ra, các profile không chỉ hữu ích cho việc thiết lập điều kiện cho các thuộc tính cấu hình trong một ứng dụng Spring. Hãy cùng xem cách khai báo các bean dành riêng cho một profile đang hoạt động.
