Chúng tôi hiện đang viết một ứng dụng được chia thành nhiều dự án / mô-đun. Ví dụ, hãy lấy các mô-đun sau:
- myApp-DAO
- myApp-jabber
Mỗi mô-đun có tệp xml ngữ cảnh Spring của riêng nó. Đối với mô-đun DAO, tôi có một PropertyPlaceholderConfigurer đọc tệp thuộc tính với các tham số kết nối db cần thiết. Trong mô-đun jabber, tôi cũng có một PropertyPlaceHolderConfigurer cho các thuộc tính kết nối jabber.
Bây giờ là ứng dụng chính bao gồm myApp-DAO và myApp-jabber. Nó đọc tất cả các tệp ngữ cảnh và bắt đầu một ngữ cảnh Spring lớn. Thật không may, có vẻ như chỉ có thể có một PropertyPlaceholderConfigurer cho mỗi ngữ cảnh, vì vậy bất kỳ mô-đun nào được tải trước đều có thể đọc các thông số kết nối của nó. Cái khác ném ra một ngoại lệ với lỗi như "Không thể giải quyết trình giữ chỗ 'jabber.host'"
Tôi hiểu vấn đề là gì, nhưng tôi không thực sự biết giải pháp - hoặc phương pháp tốt nhất cho usecase của tôi.
Tôi sẽ định cấu hình từng mô-đun như thế nào để mỗi mô-đun có thể tải tệp thuộc tính của riêng mình? Ngay bây giờ tôi đã di chuyển PropertyPlaceHolderConfigurer ra khỏi các tệp ngữ cảnh riêng biệt và hợp nhất chúng vào ngữ cảnh của ứng dụng chính (tải tất cả các tệp thuộc tính bằng một PropertyPlaceHolderConfigurer). Tuy nhiên, điều này thật tệ, bởi vì bây giờ tất cả những người sử dụng mô-đun dao đều phải biết rằng họ cần một PropertyPlaceHolderConfigurer trong ngữ cảnh của họ .. cũng như các bài kiểm tra tích hợp trong mô-đun dao không thành công, v.v.
Tôi tò mò muốn nghe về các giải pháp / ý tưởng từ cộng đồng stackoverflow ..