2015-07-16 17 views
5

मैं वसंत के लिए नया हूं, पिछले कुछ दिनों में मैं इसके बारे में सीख रहा हूं। अब मैं इसके साथ कुछ करने की कोशिश कर रहा हूँ। ऐसा लगता है कि वसंत बूट के साथ सबकुछ बदल गया है। कोई एप्लिकेशन कॉन्टेक्स्ट फ़ाइल नहीं है, मुझे @ बीन का उपयोग करना चाहिए। ठीक। ट्यूटोरियल्स में कोड काम कर रहा है, मेरे लिए यह विफल रहता है। मुझसे क्या छूट गया?वसंत बूट निर्भरता इंजेक्शन

@SpringBootApplication 
public class Application { 

    public static void main(String[] args) { 
    SpringApplication.run(Application.class, args); 
    } 
} 

नियंत्रक:

@RestController 
public class GreetingController { 

private final Test test; 

@Autowired 
public GreetingController(Test test){ 
    this.test = test; 
} 

@RequestMapping("/greeting") 
    public String greeting(@RequestParam(value = "name", defaultValue = "World") String name) { 
    return "greeting" + test.getTest(); 
    } 
} 


class Test { 

    public String getTest() { 
    return "tetst"; 
    } 
} 

त्रुटि:

Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [hello.Test] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {} 
at org.springframework.beans.factory.support.DefaultListableBeanFactory.raiseNoSuchBeanDefinitionException(DefaultListableBeanFactory.java:1301) 
at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1047) 
at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:942) 
at org.springframework.beans.factory.support.ConstructorResolver.resolveAutowiredArgument(ConstructorResolver.java:813) 
at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:741) 
... 18 more 

मुझे लगता है कि सेम परिभाषित किया जाना है ... लेकिन ट्यूटोरियल में सेम की कोई defenicion है .. या मैं इसे नहीं देखा

+0

'एप्लिकेशन' और 'ग्रीटिंग कंट्रोलर' में कौन सा पैकेज है? '@ SpringBootAplication' नियंत्रकों और घटकों के लिए स्कैन करता है, लेकिन वे एक ही पैकेज या निचले स्तर पर होना चाहिए। – spencergibb

उत्तर

9

Test कक्षा वसंत घटक के रूप में पहचाना नहीं गया है। इसलिए, आप इसे अपने GreetingController में इंजेक्ट नहीं कर सकते हैं। उस नियंत्रक में Test ऑब्जेक्ट को इंजेक्ट करने के लिए, Test एनोटेट @Component एनोटेशन (या कुछ अन्य एनोटेशन के साथ जो इंगित करता है कि आपकी कक्षा ऑटो स्कैन की जा सकती है) को एनोटेट करें।

3

पूर्ण त्रुटि मिस गई। Test पर आपको @Component की आवश्यकता है।

+0

आपको वोट दे रहा है। धन्यवाद – 5er