我使用的在線素材學習Spring框架,並實現如下一個簡單的程序:依賴注入Spring框架 - 工作
我使用「編碼接口」的方法,這是接口:
package com.vipin.math;
public interface MathOperations {
public int add(int a, int b);
public int sub(int a, int b);
}
一個,我做了實現:
package com.vipin.math;
public class MathOperationsImpl implements MathOperations {
public int add(int a, int b) {
return a+b;
}
public int sub(int a, int b) {
return a-b;
}
}
取決於這樣做的主要類是:
package com.vipin.app;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import com.vipin.math.MathOperations;
import com.vipin.math.MathOperationsImpl;
public class MainApp {
public static void main(String[] args) {
MathOperations mathOperations;
ApplicationContext appContext = null;
appContext = new ClassPathXmlApplicationContext("spring.xml");
mathOperations = appContext.getBean("mathOperationsImpl", MathOperationsImpl.class);
System.out.println(mathOperations.add(10, 20));
}
現在,因爲MainApp依賴於MathOperations(具體的實現類),並且我們在ApplicationContext上使用getBean()來執行此操作。
我嘗試使用,而不是在主本身使用getBean()方法,這樣@Resource/@Autowire:
@Resouce("MathOperationsImpl")
MathOperations mathOperations;
也是這樣:
@Autowired()
@Qualifire("MathsRelated")
MathOperations mathOperations;
但是,我得到空指針當我調用add()方法時異常。
DI是否應該在這種情況下工作?
任何線索,將不勝感激。
這裏是spring.xml,只有在這裏
<beans
<bean id="mathOperationsImpl" class="com.vipin.math.MathOperationsImpl">
<qualifier value="MathsRelated">
</bean>
<bean class="org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor"/>
(是@ @ Qualifire是你的問題中的一個錯字嗎?) – 2014-09-12 19:11:36
哦,是的,這是錯字,我使用的是Eclipse IDE,它捕獲了所有這些。 – CuriousMind 2014-09-12 19:12:42
向我們展示您的spring.xml內容。 – Jaikrat 2014-09-12 19:15:52