नीचे मेरा प्रस्तावित समाधान शायद सबसे अच्छा विचार नहीं है, लेकिन मुझे सवाल दिलचस्प लगता है और इसे एक शॉट देने का प्रयास करने का फैसला किया गया। यह सबसे अच्छा है जिसके साथ मैं आ सकता हूं।
मुझे नहीं पता कि इस पल में सीधे ऐसा करने का कोई तरीका है (किसी प्रकार के फैक्ट्री बीन को परिभाषित करने के अलावा), लेकिन वैकल्पिक रूप से आप इसे गतिशील भाषा समर्थन का उपयोग करके कर सकते हैं, उदाहरण के लिए ग्रोवी के साथ।
निम्न उदाहरण इस
public class Foo {
private Function<String, String> task;
@Autowired
public Foo(Function<String, String> task){
this.task = task;
}
public void print(String message) {
System.out.println(task.apply(message));
}
}
की तरह एक सेम मान लें तो फिर मैं की तरह एक XML विन्यास निर्धारित कर सकते हैं वसंत के नवीनतम संस्करण का उपयोग (आज 4.1.6 के रूप में)
मेरे लिए भाग गया:
<lang:groovy id="func">
<lang:inline-script>
<![CDATA[
import java.util.function.Function
{ text -> "Hello " + text } as Function
]]>
</lang:inline-script>
</lang:groovy>
<bean id="foo" class="demo.services.Foo">
<constructor-arg name="task" ref="func"/>
</bean>
बेशक, आपके लैम्ब्डा का सिंटैक्स आपके द्वारा चुने गए भाषा पर निर्भर करेगा। मुझे पता नहीं है कि ग्रोवी के पास विधि संदर्भ की तरह कुछ है, लेकिन जैसा कि मैंने उपरोक्त किया है, लैम्बडा/बंद होने के साथ किसी भी विधि संदर्भ को व्यक्त किया जा सकता है।
स्रोत
2015-07-01 17:14:26
मैं कहूंगा कि आप नहीं करते ... मैं इसके बजाय जावा आधारित कॉन्फ़िगरेशन का उपयोग करने का सुझाव देता हूं .. –
जावा-आधारित कॉन्फ़िगरेशन अभी एक विकल्प नहीं है। – Kkkev
यदि आपको उत्तर नहीं मिलता है तो एक स्प्ल विधि कॉल करें जो आपके कोड में करता है। – tgkprog