2009-05-16 20 views
34

Ứng dụng của tôi được cấu hình bởi một số tệp cấu hình Spring XML.Thực hành tốt để bao gồm cấu hình XML trong classpath Java?

Thực hành tốt trong Java có bao gồm các tệp XML trong đường dẫn lớp và tham chiếu chúng trong ứng dụng của tôi bằng cách sử dụng classpath không?

+0

@JohnnyCageWins bạn có đề xuất tốt hơn không? –

+3

Tôi chỉ đùa thôi, không cố gắng xúc phạm. Nó chỉ là một câu trả lời của Jon Skeet không được chấp nhận chỉ là một trò đùa sau khi tôi đọc các dữ kiện của Jon skeet @ Nathan Feger – Bastardo

+125

câu hỏi "Jon Skeet Facts" đưa tôi đến đây. – Crocode

Trả lời

219

Tôi thường tìm trong thuộc tính hệ thống trước rồi đến đường dẫn lớp. vậy:

java -DconfigFile=/filelocation/file.xml 

có thể được đọc như sau:

String propfile = System.getProperty(configFile); 
if (propfile != null) { 
// read in file 
    new File(propfile); 
... 
} else { 
    // read in file from classpath 
    getClass.getResource("/configfile.xml") 
} 
+205

bạn đánh bại Jon Skeet dude! – dierre

+81

@ dierre nó là vinh dự cao nhất dành cho một lập trình viên. –

+53

Tôi đang cung cấp cho bạn +1 chỉ để giữ nó theo cách đó. – dierre

54

Thật tuyệt khi có thể định cấu hình theo cả hai cách - trực tiếp dưới dạng tệp hoặc thông qua tài nguyên trên đường dẫn lớp có thể có hoặc không nằm trong tệp jar. Điều đó mang lại cho bạn rất nhiều sự linh hoạt.

3

Tôi đồng ý với áp phích trước đó (+1) - có tùy chọn trong trường hợp một số ngày bạn sẽ cần đến. Tuy nhiên, có một sự bắt giữ. Bạn có thể tạo cho mình rất nhiều đau đầu nếu dụng cụ mạnh mẽ như vậy sẽ rơi vào tay kẻ xấu. Không có nhiều sự khác biệt giữa các tệp ngữ cảnh mùa xuân và các lớp java, đó là một mã. Vì vậy, hãy kiểm tra xem ai là người dùng của bạn .. Một trong những guru QA nhiệt tình có thể làm cho cuộc sống của bạn khốn khổ nếu bạn không chuẩn bị.

2

tôi có xu hướng để đưa các file cấu hình XML vào classpath và phơi bày cấu hình có liên quan được điều chỉnh (ví dụ cho các môi trường khác nhau) sang các file tài sản bên ngoài sử dụng một số PropertyPlaceholderConfigurer hoặc các loại tương tự (phụ thuộc vào các yêu cầu thực tế). Một cách hay để tạo hồ sơ là có các tệp thuộc tính với một tập hợp các cài đặt cho từng môi trường và cho phép quản trị viên chọn một tùy chọn cần thiết bằng cách cung cấp thuộc tính hệ thống mà giá trị của nó được dịch sang tra cứu tệp thuộc tính. Xem tài liệu API của PropertyPlaceholderConfigurer để biết chi tiết.

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