परियोजना में इस्तेमाल किया कई करने के लिए कॉन्फ़िगर किया गया है MongoTemplate रोंकस्टम भंडार कार्यान्वयन के लिए MongoTemplate पासिंग
मोंगो रेफरी पैकेज में खजाने के लिए
@EnableMongoRepositories(basePackages={"com.mypackage.one"}, mongoTemplateRef="mongoTemplateOne")
के रूप में पारित हो जाता है com.mypackage.one
और
@EnableMongoRepositories(basePackages={"com.mypackage.two"}, mongoTemplateRef="mongoTemplateTwo")
पैकेज com.mypackage.two
मानक खजाने के लिए में खजाने के लिए यह ठीक काम करता है। लेकिन परिदृश्यों के लिए, जहां मुझे कस्टम व्यवहार की आवश्यकता है, मैं अपने कस्टम व्यवहार आवश्यकताओं के साथ myRepoCustomImpl कहता हूं।
समस्या: मैं MongoTemplate जो अनुरूप मानक भंडार का उपयोग करने की जरूरत है।
उदा। तो MyRepo
रूप
@Repository
interface MyRepo extends MongoRepository<MyEntity, String>, MyRepoCustom{}
MyRepoCustom
इंटरफेस प्रदान कर रहा है MyRepoCustomImpl
@Service
public class MyRepoCustomImpl implements MyRepoCustom{
@Autowired
@Qualifier("mongoTemplateOne")
MongoTemplate mongoTmpl;
@Override
MyEntity myCustomNeedFunc(String arg){
// MyImplemenation goes here
}
}
तो MyRepo पैकेज com.mypackage.one
में है, mongoTemplateOne
myRepo द्वारा उपयोग किया जाएगा, इसलिए करने के लिए एक किसी तरह होना चाहिए MyRepoCustomImpl को पता चलेगा कि इसे mongoTemplateOne का भी उपयोग करना चाहिए, जब भी मैं 0 में परिवर्तन करूंगा MyRepo
के लिए, के रूप में
@EnableMongoRepositories(basePackages={"com.mypackage.one"}, mongoTemplateRef="mongoTemplateThree")
अब मैं MyRepoCustomImpl
में @Qualifier में परिवर्तन करने की जरूरत है कहते हैं! कस्टम व्यवहार के साथ बहुत से प्रतिनिधि हैं, इसलिए यह कठिन कार्य बन रहा है।
प्रश्न: इसके बजाय ऐसा कोई तरीका नहीं है कि मोंगो टेम्पलेट का उपयोग किया जाना चाहिए रेपो के अनुसार स्वचालित रूप से इंजेक्शन या हल किया जाना चाहिए?
एकमात्र चीज जो आप कर सकते हैं वह है कि बेस क्लास रखना और संबंधित क्वालीफायर के साथ मोंगो टेम्पलेट को प्रारंभ करना और उस चर को संरक्षित करना है। –