मैं स्प्रिंग फ्रेमवर्क के साथ शुरू करने के लिए कुछ ट्यूटोरियल्स देख रहा हूं और this one पर आया हूं। इसके बाद, मैं नीचे दी गई त्रुटियों में भाग गया। (मैं के बाद से वसंत ढांचे के संस्करण 3 उपयोग करने के लिए अद्यतन किया है और मैं अभी भी एक ही त्रुटियों हो रही है।स्प्रिंग 3 @ ऑटोवायर एनोटेशन मुद्दे
संक्षेप में, मैं एक NullPointerException जहां मैं एक AutoWired वर्ग पर एक विधि कॉल हो रही है।
मेरी कक्षा SayHello है:।
public class SayHello {
private String name;
public void setName(String name) {
this.name = name;
}
public String getName() {
return name;
}
public void greet() {
System.out.println("Hello " + getName());
}
}
मैं तो /src/test/resources/applicationContext.xml में निम्नलिखित सेट
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd">
<context:annotation-config/>
<bean id="hello" class="package.SayHello">
<property name="name" value="John Smith" />
</bean
और आखिरकार मेरे पास ऐपटेस्ट क्लास है जहां मैं परीक्षण करने के लिए एक SayHello ऑब्जेक्ट को ऑटोवायर करने का प्रयास करता हूं।
public class AppTest {
@Autowired
private SayHello hello;
@Test
public void testApp()
{
hello.greet();
Assert.assertTrue(true);
}
}
जब मैं AppTest चलाने का प्रयास रहा हो तो निम्न त्रुटि:
java.lang.NullPointerException
at package.AppTest.testApp(AppTest.java:19)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:601)
at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:47)
at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:44)
at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:271)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:70)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50)
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:238)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:63)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:236)
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:53)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:229)
at org.junit.runners.ParentRunner.run(ParentRunner.java:309)
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50)
at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)
मैं विभिन्न लेख और stackoverflow पर सवाल पर लेकिन कुछ की कोशिश कर रहा है और कहीं भी नहीं मिल रहा है के बाद एक नज़र लिया है, सोचा मैं एक नई पोस्ट तैयार करूंगा।
चीयर्स।
यह मदद करता है, यहाँ निर्भरता है कि मैं (स्प्रिंग v3.2.1) का उपयोग कर रहा है:
<dependencies>
<!-- JUnit -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<scope>test</scope>
</dependency>
<!-- Spring -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
<version>${org.springframework.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>${org.springframework.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>${org.springframework.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context-support</artifactId>
<version>${org.springframework.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aop</artifactId>
<version>${org.springframework.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jms</artifactId>
<version>${org.springframework.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>${org.springframework.version}</version>
</dependency>
अद्यतन
मैं भी @Autowired का उपयोग कर की कोशिश की है मुख्य आवेदन में एनोटेशन निम्नानुसार है। और अभी भी एक NullPointerException त्रुटि प्राप्त करें।
public class App
{
@Autowired
private static SayHello hello;
public static void main(String[] args)
{
hello.greet();
}
}
शानदार, यह किया! मेरा परीक्षण अब गुजर रहा है और प्रिंटिंग आउटपुट जैसा कि मैं उम्मीद करता हूं।क्या मुझे मुख्य आवेदन के साथ काम करने के लिए ऑटोवॉयरिंग प्राप्त करने के समान कुछ करना है? धन्यवाद @ zagyi! – cast01
नहीं, यदि आप लिंक किए गए आलेख में परिभाषित अनुसार 'ऐप' क्लास का उपयोग करते हैं, तो यह एनएमएल कॉन्फ़िगरेशन में' 'पंक्ति द्वारा निर्देशित एनोटेशन को संसाधित करेगा। –
zagyi
चीयर्स @ ज़ागई, मुझे यकीन नहीं था कि अगर मैं बीनफैक्टरी को तुरंत चालू करने और स्पष्ट रूप से GetBean() का उपयोग किए बिना ऐसा कर सकता हूं, तो आईडी स्वचालित रूप से ऑटोवायर एनोटेशन का उपयोग करना पसंद करता है। – cast01