Tôi đang làm việc trên một dự án với một số mô-đun riêng biệt, mỗi tệp có các tệp thuộc tính ngữ cảnh ứng dụng của riêng chúng. Tôi muốn có thể tải tất cả các thuộc tính này để chúng có thể được sử dụng cho độ phân giải trình giữ chỗ của Spring.Nhiều tệp thuộc tính trong Spring 3.0
Câu hỏi trước đã đề cập đến điều này và có một bài đăng blog tốt here mô tả cách sử dụng PropertyPlaceholderConfigurer trong mỗi ngữ cảnh, sắp xếp chúng theo mức độ ưu tiên và đặt ignoreUnresolveablePlaceholders thành true để các tệp thuộc tính này có thể tham chiếu chéo với nhau mà không thổi lên.
Tuy nhiên, điều này không giải quyết được sự cố của tôi vì tôi cũng muốn có thể sử dụng thuộc tính mà tôi đang tải cho một số độ phân giải trình giữ chỗ tùy chỉnh (từ một số tệp yaml tôi đang phân tích cú pháp). Điều này đòi hỏi phải sử dụng một PropertyPlaceholderHelper, đòi hỏi đối tượng Properties làm đối số.
Theo như tôi có thể biết, các giải pháp tiềm năng là:
1) Hợp nhất tất cả tệp thuộc tính vào một bean thuộc tính. Điều này sau đó có thể được sử dụng để tạo ra một PropertyPlaceholderConfigurer (cho độ phân giải giữ chỗ bên trong của Spring) và được sử dụng với một PropertyPlaceholderHelper (cho độ phân giải chỗ dành sẵn của riêng tôi)
2) Bằng cách nào đó cấu hình PropertyPlaceholderHelper để sử dụng tập hợp thuộc tính và sắp xếp thứ bậc của chúng, được tổ chức bởi PropertyPlaceholderConfigurers nếu tôi tiếp tục và làm theo lời khuyên của bài đăng trên blog đó.
Rất tiếc, tôi không thể tìm ra cách thực hiện một trong hai cách này. Mọi sự trợ giúp sẽ rất được trân trọng!
PS Dường như mùa xuân 3.1 sẽ là một trợ giúp lớn ở đây ... không may là chúng tôi chưa sẵn sàng chuyển sang đó nên tôi vẫn cần một giải pháp để giải quyết vấn đề này!
**** CHỈNH SỬA ****
Cảm ơn câu trả lời cho đến nay. Họ là những câu trả lời hay nhưng tiếc là sẽ không giúp tôi vì (và xin lỗi vì đã không đề cập đến điều này trước đó), chúng tôi hiện đang trong quá trình tách các mô-đun cốt lõi của dự án khỏi các mô-đun không phải lõi. Điều này có nghĩa là các mô đun cốt lõi và bối cảnh ứng dụng của chúng không thể mã hóa cứng tên của các tệp thuộc tính. Bực bội, quét classpath của Spring dường như bị hỏng, vì vậy các ký tự đại diện thuộc loại "classpath *: *. Properties" chỉ hoạt động khi xây dựng các mô-đun riêng lẻ, chứ không phải dự án cấp cao nhất (tôi tin đây là một vấn đề đã biết).
Câu hỏi là sau đó làm cách nào để hợp nhất các tệp thuộc tính được xác định trong các mô-đun không phải lõi thành các tệp thuộc tính hiện có được xác định trong các mô-đun chính. Tại thời điểm này tôi đang đi trước với một BeanPostProcessor - Tôi chỉ tự hỏi nếu có một cách đơn giản hơn/thanh lịch hơn để làm điều này?
Cảm ơn
Tôi nghĩ bạn cần cung cấp ít nhất một phân đoạn dir không đổi, vì vậy 'classpath *: *. Properties' sẽ không hoạt động nhưng' classpath *: config/*. Properties' sẽ. – mrembisz