2009-06-08 31 views
10

Tôi muốn biết cách xử lý tài sản hiệu quả nhất trong Scala là gì. Tôi mệt mỏi vì có các tệp thuộc tính gazillion, các tệp xml và các loại tệp cấu hình khác trong Java và tự hỏi liệu có "thực hành tốt nhất" để xử lý những ứng dụng này hiệu quả hơn trong Scala không?Thuộc tính xử lý trong Scala

Trả lời

2

EDIT: typesafe cấu hình cung cấp cho bạn một giải pháp đơn giản và mạnh mẽ để cấu hình - https://github.com/typesafehub/config

ORIGINAL (có thể không phải là rất hữu ích):

Trích dẫn từ "Lập trình trong Scala":

"Trong Scala , bạn có thể cấu hình thông qua mã Scala. "

Liên kết thời gian chạy của Scala cho phép các lớp được hoán đổi vào thời gian chạy và triết lý chung của các ngôn ngữ này có xu hướng ưu tiên hơn so với cấu hình. Nếu bạn không muốn xử lý các tệp thuộc tính gazillion, chỉ cần không có chúng.

+0

Tôi không thấy cách trả lời câu hỏi. Bạn có thể mở rộng không? "Hoán đổi khi chạy" có vẻ hàm ý cấu hình bằng cách tự động phản hồi môi trường thời gian chạy. Nhưng nhiều thông số cấu hình không được biết đến thời gian chạy, chẳng hạn như mật khẩu DB hoặc quản trị viên nhận được email lỗi. Chúng ta có thể nói về các cơ chế khám phá dịch vụ, nhưng đó là quá mức cần thiết đối với các dự án nhỏ và chúng sẽ có thông số cấu hình riêng, đưa ra câu hỏi xuống dốc. Tại một thời điểm nào đó, bạn cần cung cấp đầu vào cho chương trình của mình. Nếu bạn tổ chức nó thành các cặp khóa/giá trị, bạn có các tệp thuộc tính ... – DrGary

+0

Đối với các cài đặt dành riêng cho môi trường (mà thực sự là những cài đặt duy nhất được bên ngoài), bạn có thể nhận các thuộc tính hệ thống như trong Java, như sau: val databaseName = System.getProperty ("myapp.db.name"). Sau đó, bạn định cấu hình chúng trong tập lệnh khởi động của mình và cung cấp cho chúng thời gian chạy như sau: java -Dmyapp.db.name = DeeBee MainClass. Đối với mật khẩu, có thể bạn không nên có mật khẩu trong tệp, có thể bạn có thể yêu cầu ứng dụng nhắc bạn khi khởi động. – George

+0

Bạn có thể đưa ra một ví dụ không. Điều này nghe rất hữu ích. – Jus12

4

Tại sao bạn có tệp thuộc tính gazillion?

Tôi vẫn đang sử dụng dấu phẩy Apache Digester, hoạt động hoàn toàn tốt ở Scala. Về cơ bản, đây là cách dễ dàng để tạo bản đồ tài liệu XML do người dùng định nghĩa cho các cuộc gọi phương thức trên lớp cấu hình do người dùng xác định. Tôi thấy nó cực kỳ hữu ích khi tôi muốn phân tích một số dữ liệu cấu hình (trái ngược với các thuộc tính ứng dụng).

Đối với thuộc tính ứng dụng, bạn có thể sử dụng khung tiêm phụ thuộc (như Spring) hoặc chỉ các tệp thuộc tính cũ đơn giản. Tôi cũng muốn được quan tâm để xem nếu Scala cung cấp bất cứ điều gì trên đầu trang này, mặc dù.

2

Khám phá Configgy trông giống như một thư viện nhỏ gọn gàng. Nó bao gồm làm tổ và thay đổi thông báo. Nó cũng bao gồm một thư viện khai thác gỗ.

Thật không may, nó không biên dịch cho tôi trên các phiên bản Mac mà tôi đã thử. Hãy cho chúng tôi biết nếu bạn có may mắn hơn và những gì bạn nghĩ ...

Cập nhật: giải quyết vấn đề biên dịch Mac. Xem này post.

Các vấn đề liên quan