Sự khác nhau giữa file application với bootstrap trong Spring

Sự khác nhau giữa file application với bootstrap trong Spring

Phân biệt sự khác nhau giữa 2 file cấu hình là application.properties với bootstrap.properties hoặc application.yml với bootstrap.yml.
Khi nào thì sử dụng file cấu hình application, khi nào thì sử dụng file cấu hình bootstrap?

1. File application.properties / application.yml dùng để làm gì?

File application.properties hoặc application.yml được dùng để cấu hình application context (ngữ cảnh ứng dụng)

Khi ứng dụng Spring Boot được khởi động, nó sẽ tạo một application context mà không cần phải chỉ định 1 cách rõ ràng (tự động cấu hình). Đó là nguyên nhân vì sao khi sử dụng spring boot bạn phải cấu hình rất ít.

Ngoài việc sử dụng file application.properties hoặc application.yml thì spring cũng cho phép ghi đè lại các cấu hình bằng nhiều cách như sử dụng code, các biến môi trường…

Chúng ta có thể nhóm các thuộc tính cấu hình mà có thể ghi đè trong application context như sau:

  • Core properties (logging properties, thread properties)
  • Integration properties (RabbitMQ properties, ActiveMQ properties)
  • Web properties (HTTP properties, MVC properties)
  • Security properties (LDAP properties, OAuth2 properties)

* Lưu ý: nếu các cấu hình của application context được ghi đè ở nhiều nơi thì cấu hình trong file application.properties hoặc application.yml có ưu tiên thấp hơn

2. File bootstrap.properties / bootstrap.yml dùng để làm gì?

File bootstrap.properties hoặc bootstrap.yml chỉ cần khi sử dụng Spring Cloud.

File bootstrap.properties hoặc bootstrap.yml được dùng để cấu hình bootstrap context. Bootstrap context chính là response của việc load các cấu hình từ một nguồn bên ngoài.

File bootstrap.properties hoặc bootstrap.yml thường gồm 2 thuộc tính:

  • Uri của config server (server chứa các cấu hình): spring.cloud.config.uri
  • Tên của ứng dụng: spring.application.name

Khi ứng dụng Spring Cloud được khởi động, nó sẽ tạo một bootstrap context. Dựa vào các thông tin cấu hình trong file bootstrap.properties hoặc bootstrap.yml, ứng dụng sẽ tạo một http request tới config server với name của ứng dụng để lấy về các thông tin cấu hình tương ứng.

File bootstrap sẽ được ứng dụng nạp vào trước file application.

3. Kết luận

File application.properties hoặc application.yml là nơi chứa cấu hình mặc định của ứng dụng. Còn file bootstrap.properties hoặc bootstrap.yml chỉ dùng cho các ựng dụng spring cloud.

Okay, Done!

References:

https://cloud.spring.io/spring-cloud-commons/multi/multi__spring_cloud_context_application_context_services.html

https://stackoverflow.com/questions/32997352/what-is-the-difference-between-putting-a-property-on-application-yml-or-bootstra

stackjava.com