ขณะนี้เรากำลังเขียนแอปพลิเคชันซึ่งแบ่งออกเป็นหลายโครงการ / โมดูล ตัวอย่างเช่นลองใช้โมดูลต่อไปนี้:
- myApp-DAO
- myApp-jabber
แต่ละโมดูลมีไฟล์ xml บริบท Spring ของตัวเอง สำหรับโมดูล DAO ฉันมี PropertyPlaceholderConfigurer ซึ่งอ่านไฟล์คุณสมบัติที่มีพารามิเตอร์การเชื่อมต่อ db ที่จำเป็น ในโมดูล jabber ฉันยังมี PropertyPlaceHolderConfigurer สำหรับคุณสมบัติการเชื่อมต่อ jabber
ตอนนี้แอปพลิเคชันหลักมาพร้อมกับ myApp-DAO และ myApp-jabber มันอ่านไฟล์บริบททั้งหมดและเริ่มบริบท Spring ขนาดใหญ่หนึ่งรายการ น่าเสียดายที่ดูเหมือนว่าจะมี PropertyPlaceholderConfigurer ได้เพียงหนึ่งรายการต่อบริบทดังนั้นโมดูลใดที่โหลดก่อนจึงสามารถอ่านพารามิเตอร์การเชื่อมต่อได้ อีกอันหนึ่งแสดงข้อยกเว้นพร้อมข้อผิดพลาดเช่น "ไม่สามารถแก้ไขตัวยึดตำแหน่ง 'jabber.host'"
ฉันเข้าใจว่าปัญหาคืออะไร แต่ฉันไม่รู้วิธีแก้ปัญหาหรือแนวทางปฏิบัติที่ดีที่สุดสำหรับกรณีการใช้งานของฉัน
ฉันจะกำหนดค่าแต่ละโมดูลเพื่อให้แต่ละโมดูลสามารถโหลดไฟล์คุณสมบัติของตัวเองได้อย่างไร ตอนนี้ฉันได้ย้าย PropertyPlaceHolderConfigurer ออกจากไฟล์บริบทที่แยกจากกันและรวมเข้ากับบริบทของแอปพลิเคชันหลัก (โหลดไฟล์คุณสมบัติทั้งหมดด้วย PropertyPlaceHolderConfigurer เดียว) แม้ว่าสิ่งนี้จะแย่เพราะตอนนี้ทุกคนที่ใช้โมดูล dao ต้องรู้ว่าพวกเขาต้องการ PropertyPlaceHolderConfigurer ในบริบทของพวกเขา .. รวมถึงการทดสอบการรวมในโมดูล dao ก็ล้มเหลวเป็นต้น
ฉันอยากรู้เกี่ยวกับวิธีแก้ปัญหา / แนวคิดจากชุมชน stackoverflow ..