पहला, और सबसे महत्वपूर्ण - सभी वसंत बीन्स प्रबंधित होते हैं - वे "अनुप्रयोग संदर्भ" नामक एक कंटेनर के अंदर "रहते हैं"।
दूसरा, प्रत्येक एप्लिकेशन के उस संदर्भ में एक प्रविष्टि बिंदु है। वेब अनुप्रयोगों में एक सर्वलेट है, JSF एक एल-रिज़ॉल्यूवर का उपयोग करता है, आदि। साथ ही, एक ऐसा स्थान है जहां एप्लिकेशन संदर्भ बूटस्ट्रैप किया गया है और सभी सेम - स्वचालित। वेब अनुप्रयोगों में यह एक स्टार्टअप श्रोता हो सकता है।
ऑटोवायरिंग एक बीन के उदाहरण को किसी अन्य बीन के उदाहरण में वांछित क्षेत्र में रखकर होती है। दोनों वर्ग बीन्स होना चाहिए, यानी उन्हें आवेदन संदर्भ में रहने के लिए परिभाषित किया जाना चाहिए।
एप्लिकेशन संदर्भ में "जीवित" क्या है? इसका मतलब है कि संदर्भ वस्तुओं को तुरंत चालू करता है, न कि आप। अर्थात। - आप कभी भी new UserServiceImpl()
नहीं बनाते - कंटेनर प्रत्येक इंजेक्शन बिंदु पाता है और वहां एक उदाहरण सेट करता है।
@Controller // Defines that this class is a spring bean
@RequestMapping("/users")
public class SomeController {
// Tells the application context to inject an instance of UserService here
@Autowired
private UserService userService;
@RequestMapping("/login")
public void login(@RequestParam("username") String username,
@RequestParam("password") String password) {
// The UserServiceImpl is already injected and you can use it
userService.login(username, password);
}
}
कुछ नोट::
अपने नियंत्रकों में, आप बस निम्न होना
- में अपने
applicationContext.xml
आप <context:component-scan>
ताकि कक्षाएं @Controller
, @Service
के लिए स्कैन किए सक्षम होना चाहिए, आदि एनोटेशन।
- स्प्रिंग-एमवीसी अनुप्रयोग के लिए प्रवेश बिंदु डिस्पैचर सर्वलेट है, लेकिन यह आपके से छिपा हुआ है, और इसलिए दृश्य संदर्भ के प्रत्यक्ष संपर्क और बूटस्ट्रैपिंग दृश्य के पीछे होती है।
UserServiceImpl
को बीन के रूप में भी परिभाषित किया जाना चाहिए - या तो <bean id=".." class="..">
का उपयोग करके या @Service
एनोटेशन का उपयोग करना। चूंकि यह UserService
का एकमात्र कार्यान्वयन होगा, इसे इंजेक्शन दिया जाएगा।
@Autowired
एनोटेशन के अलावा, वसंत एक्सएमएल-कॉन्फ़िगर करने योग्य ऑटोवॉयरिंग का उपयोग कर सकता है। उस स्थिति में जिन क्षेत्रों में नाम या प्रकार होता है जो किसी मौजूदा बीन से मेल खाते हैं, स्वचालित रूप से एक बीन इंजेक्शन प्राप्त करते हैं। वास्तव में, यह ऑटोवॉयरिंग का प्रारंभिक विचार था - किसी भी कॉन्फ़िगरेशन के बिना निर्भरताओं के साथ इंजेक्शन वाले फ़ील्ड रखने के लिए। अन्य टिप्पणियां जैसे @Inject
, @Resource
का भी उपयोग किया जा सकता है।
[समझना स्प्रिंग @Autowired उपयोग] (https की संभावित डुप्लिकेट से मिल गया।कॉम/प्रश्न/1 9 414734/समझ-वसंत-ऑटोवायर-उपयोग) – tkruse