पर आधारित रनटाइम पर इंजेक्शन कैसे बदलें, निम्नलिखित समस्या का अनुमान है जो मुझे सामना कर रहा है।गिस: एक (गतिशील वेब प्रॉपर्टी)
सोचें कि हमारे पास कुछ नियमों के साथ एक पासवर्ड सत्यापनकर्ता है।
public interface RuleChecker{
//Checks for a password strenght, returns 10
//for strong or 0 for soft password.
int check(String pass);
}
और फिर हमारे पास कई कार्यान्वयन हैं, हमारी सेवा केवल 8 अंकों से अधिक होने पर पासवर्ड स्वीकार करेगी।
public class NoCheck implements RuleChecker {
public int check(String pass){return 10;}
}
public class LengthCheck implements RuleChecker{
...
}
public class AlphanumericCheck implements RuleChecker{
...
}
public class AlphaAndLenghtCheckAdapter implements RuleChecker{
...
}
लेकिन परीक्षण प्रयोजनों के लिए, हम आवेदन जहाँ हम "व्यवस्थापक" उन नियमों, और चुन सकते हैं कि करने के लिए के भीतर एक वेब सेवा को लागू करना चाहते हैं।
public class PasswordCheckService{
private RuleChecker checker;
@Inject
public PasswordCheckService(final RuleChecker checker){
this.checker = checker;
}
public boolean checkPassword(String password){
return checker.check(password) > 8;
}
}
तो, क्या गुइस में रनटाइम में बदलने के लिए कोई तरीका है, इंजेक्शन में एक सेवा है?
उदाहरण:
हम आवेदन शुरू कर दिया और डिफ़ॉल्ट रूप से LengthCheck चुना गया है और आवेदन पर इंजेक्शन, वेबसाइट पर हम NoCheck चेकबॉक्स का चयन करें और विकल्प बचाने के लिए, जो डेटाबेस में संग्रहीत किया जाता है, मैं Guice के लिए कॉन्फ़िगर कर सकते हैं स्वचालित रूप से उस बीन को बदल दें जो सेवा पहले इंजेक्शन थी? तो अब से और नए पासवर्ड पर कोई जांच नहीं होगी?
-
अब के रूप में, मैं उन विषयों
Google Guice and varying injections at runtime पाया है लेकिन मुझे नहीं पता है कि प्रदाताओं उस तरह मेरी समस्या फिट बैठता है।
Guice runtime dependency parameters reinjection यह अच्छा सवाल कुछ समान बात कर रहा है, लेकिन जो मैं देख रहा हूं वह नहीं।
guice: runtime injection/binding at command line यह मेरी समस्या का सबसे नज़दीकी है लेकिन वह केवल "रनटाइम" शुरू करने पर करता है और उस समय इसे बदलता नहीं है।
कोई मदद करता है?
धन्यवाद!
पहली टिप्पणी की नोक का उपयोग करके मैंने इस पीओसी को लागू किया लेकिन अभी भी काम नहीं करता है, अगर आप एक और बटन चुनते हैं तो सेवा बीन अपडेट नहीं होता है। https://bitbucket.org/ramonboza/guicedynamicconfig
अच्छा प्रश्न:
आप इस तरह अपने खेतों और सेवाओं की घोषणा करने के लिए है। मैं कुछ ऐसा ही करने की कोशिश कर रहा हूं। – tom