lần thứ nhất về định dạng:
- Java property files là tốt cho cặp khóa/giá trị (cũng tự động xử lý các ký tự xuống dòng). Một mức độ cấu trúc là có thể bằng cách sử dụng 'dấu chấm'. Nhược điểm là cấu trúc không cho phép bạn dễ dàng liệt kê các thực thể cấu hình mức cao nhất và làm việc theo cách phân tích. Được sử dụng tốt nhất cho một tập hợp nhỏ các cài đặt cụ thể cho môi trường có thể chỉnh sửa được
- Các tệp XML - thường được sử dụng để cấu hình phức tạp hơn các khung công tác Java khác nhau (đặc biệt là J2EE và Spring). Tôi sẽ khuyên bạn ít nhất là tìm hiểu về Spring - nó chứa nhiều ý tưởng đáng biết ngay cả khi bạn quyết định không sử dụng nó. Nếu bạn quyết định cuộn cấu hình XML của riêng mình, tôi khuyên bạn nên sử dụng XStream với các tùy chọn tuần tự hóa tùy chỉnh hoặc nếu bạn chỉ cần phân tích cú pháp một số XML, hãy xem XOM. BTW Spring cũng cho phép bạn cắm ngôn ngữ cấu hình XML tùy chỉnh của bạn, nhưng nó là relatively complex task. Cấu hình XML được sử dụng tốt nhất cho cấu hình 'nội bộ' phức tạp hơn mà người dùng cuối không nhìn thấy hoặc điều chỉnh.
- Đối tượng Java được tuần tự hóa - một cách nhanh chóng và dễ dàng để duy trì trạng thái của đối tượng và khôi phục sau này. Hữu ích nếu bạn viết một GUI cấu hình và bạn không quan tâm nếu cấu hình là con người có thể đọc được. Cẩn thận với compatibility issues khi bạn phát triển các lớp học.
- Tùy chọn - được giới thiệu trong Java 1.4, cho phép bạn lưu trữ văn bản, số, mảng byte và các nguyên bản khác trong lưu trữ theo nền tảng cụ thể. Trên Windows, đó là đăng ký (bạn có thể chọn giữa /Phần mềm/JavaSoft/Prefs dưới HKLM hoặc HKCU). Trong Unix, cùng một API tạo các tệp trong nhà người dùng hoặc /etc. Mỗi hive prefs có thể được xuất và nhập dưới dạng tệp XML. Bạn có thể chỉ định thực hiện tùy chỉnh giao diện PreferencesFactory bằng cách đặt thuộc tính JVM "java.util.prefs.PreferencesFactory" thành tên lớp triển khai của bạn.
Nói chung, sử dụng API prefs có thể là một điều tốt hoặc xấu dựa trên kịch bản ứng dụng của bạn.
- Nếu bạn dự định có nhiều phiên bản của cùng một mã chạy trên cùng một máy có cấu hình khác nhau thì sử dụng API tùy chọn là ý tưởng tồi.
- Nếu bạn định sử dụng ứng dụng trong môi trường bị hạn chế (tên miền Windows hoặc hộp Unix được quản lý chặt chẽ), bạn cần đảm bảo rằng bạn có quyền truy cập thích hợp vào các khóa/thư mục đăng ký cần thiết. Điều này đã khiến tôi ngạc nhiên hơn một lần.
- Hãy coi chừng từ các hồ sơ chuyển vùng (các bản sao trang chủ được sao chép) chúng tạo nên một số tình huống hài hước khi có nhiều hơn một máy đang hoạt động.
- Tùy chọn không rõ ràng như tệp cấu hình trong thư mục của ứng dụng. hầu hết các nhân viên hỗ trợ máy tính để bàn không mong đợi và không thích chúng.
Về bố cục tệp của tiền tố, nó lại phụ thuộc vào ứng dụng của bạn. Đề xuất chung là:
- Đóng gói hầu hết các tệp XML của bạn bên trong JAR của ứng dụng trong thư mục gốc hoặc dưới thư mục META-INF. Những tệp này sẽ là chỉ đọc và được coi là riêng tư cho ứng dụng.
- Đặt cấu hình có thể sửa đổi người dùng theo $ APP_HOME/conf. Nó phải bao gồm chủ yếu các tệp thuộc tính và đôi khi là một tệp XML đơn giản (xStream serialization). Các tệp này được tinh chỉnh như là một phần của quá trình cài đặt và thường không phải là người dùng có thể sử dụng được.
- Theo người dùng nhà, trong một thư mục dấu chấm (tức là '~/.myapplication') lưu trữ bất kỳ cấu hình người dùng nào. Cấu hình người dùng có thể ghi đè cấu hình người dùng trong thư mục conf của ứng dụng. Bất kỳ thay đổi nào được thực hiện từ bên trong ứng dụng đều có tại đây (xem thêm điểm tiếp theo).
- Bạn cũng có thể sử dụng thư mục $ APP_HOME/var để lưu trữ bất kỳ dữ liệu có thể thay đổi nào khác cụ thể cho cá thể ứng dụng này (trái ngược với người dùng). Một ưu điểm khác của phương pháp này là bạn có thể di chuyển và sao lưu toàn bộ ứng dụng và cấu hình của nó bằng bản sao đơn giản của một thư mục.
Điều này minh họa một số kỹ thuật tiêu chuẩn để quản lý cấu hình.Bạn có thể thực hiện chúng sử dụng các thư viện và các công cụ khác nhau, bắt đầu từ nguyên JRE, thêm mùa xuân/Guice hoặc đi cho một container J2EE đầy đủ (có thể với mùa xuân nhúng)
cách tiếp cận khác để quản lý cấu hình là:
- Sử dụng multiple base directories để chạy nhiều phiên bản của ứng dụng bằng các cấu hình khác nhau.
- Sử dụng lightweightregistries để quản lý cấu hình tập trung
- Giá trị cụ thể của máy chủ lưu trữ cấu hình cho mỗi máy được rsync-ed hàng đêm cho tất cả các máy chủ sản xuất. Ứng dụng sử dụng một cấu hình templated và chọn từ CMDB trong suốt thời gian chạy dựa trên tên máy chủ hiện tại.