Một ứng dụng DropWizard điển hình xác định một lớp ứng dụng, và ghi đè phương pháp initialize
của nó như sau:DropWizard Bootstrap vs Cấu hình vs Môi trường
class MyApplication extends Application<MyConfiguration> {
static void main(String[] args) {
new MyApplication().run(args)
}
@Override
public void initialize(Bootstrap<MyConfiguration> bootstrap) {
// ???
}
@Override
public void run(MyConfiguration configuration, Environment environment)
throws Exception {
// Register resources, health checks, etc.
}
}
Sau khi xem xét kỹ các tài liệu DropWizard, cũng như các JavaDocs cho:
Configuration
- Một biểu tượng đối tượng của tệp cấu hình YAML. Mở rộng điều này với các thuộc tính cấu hình của riêng bạn và chúng cũng sẽ được phân tích cú pháp từ tệp YAML.Bootstrap
- Môi trường ứng dụng trước khi bắt đầu, chứa mọi thứ cần thiết để khởi động một lệnh Dropwizard.Environment
- Môi trường của ứng dụng Dropwizard.
Nhưng đây là những định nghĩa lớp học mơ hồ, đặc biệt là hai định dạng cuối cùng. Tôi hiểu rằng tôi phải phân lớp Configuration
và nó đại diện cho POJO trong bộ nhớ của tệp cấu hình YAML/JSON của ứng dụng của tôi.
Nhưng tôi không thể hiểu những gì các cấu trúc khác đại diện (Bootstrap
và Environment
). Tôi đã sử dụng để tiêm cấu hình dành riêng cho môi trường vào ứng dụng của mình và vì vậy, tôi có xu hướng nghĩ về các khái niệm về "môi trường" và "cấu hình" như một khái niệm giống nhau.
Hơn nữa, có vẻ như các cặp đôi chặt chẽ của DropWizard là trường hợp với Configuration
trường hợp, nhưng tôi không thể tìm thấy ví dụ nào về cách hai lớp này khác nhau và cách chúng được sử dụng khác nhau.
Vì vậy, tôi hỏi:
- một
Bootstrap
là gì, những gì tôi sử dụng nó cho? Environment
là gì và tôi sử dụng nó để làm gì?
Cảm ơn @ th3morg (+1) - Tôi đoán * bắt đầu * có ý nghĩa và tôi sẽ xem xét các nguồn để đào sâu hơn một chút. Một câu hỏi tiếp theo về 'Môi trường': điều này sẽ được sử dụng để xác định rằng chúng ta đang ở phiên bản" dev "của Jersey/Jetty, và vì vậy chúng ta nên sử dụng một db nhúng trong bộ nhớ, so với" prod " phiên bản của container, do đó sử dụng máy chủ MySQL thực tế của chúng tôi? Nếu không, bạn có thể trích dẫn một vài ví dụ cụ thể về các ca sử dụng của 'Environment' không? Cảm ơn một lần nữa! – IAmYourFaja
@IAmYourFaja Một điều khác tôi khuyên bạn nên làm là chạy ứng dụng của bạn trong chế độ gỡ lỗi trong một IDE nơi bạn có thể tạm dừng và/hoặc bước qua thực hiện thông qua các lớp Bootstrap và Môi trường. Bạn sẽ nhanh chóng có được ý tưởng về tất cả công việc đang được thực hiện đằng sau hậu trường để định cấu hình mọi thứ :) – th3morg
Cảm ơn @ th3morg (+1) - nhưng tôi ở trên Windows nơi tôi không có quyền truy cập vào IDE, tôi ' m chỉ sử dụng Notepad đơn giản. – IAmYourFaja