我几乎是Spring的初学者,所以不要仅仅因为我没有提及我可能会做的事情。
我正在努力让依赖注入工作,我得到了一个包含以下内容的spring.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-2.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.1.xsd">
<context:annotation-config/>
<bean id="connection" class="richo.project.ConnectionImpl"/>
</beans>
然后在我的代码中我有:
private IConnection conn;
@Resource(name="connection")
public void setConn(IConnection conn){
this.conn = conn;
}
当我尝试在我的代码中使用conn-object时,我得到一个nullpointerexception
请记住,我实际上并不知道spring是否正在运行,我正在使用IntelliJ,并且它在我的lib目录中放置了13个与spring相关的jar文件,但是我无法确定Spring是否正在尝试注入任何东西
答案 0 :(得分:2)
在类路径中使用Spring并不足以使其工作。
您必须要求Spring生成您需要注意的任何注释所需的对象。这可能发生在Spring容器中,但对于独立应用程序,您需要具有Spring上下文(例如AnnotationConfigApplicationContext)并通过其getBean()
方法询问它。
答案 1 :(得分:0)
首先,您的代码无法编译。它应该遵循JavaBeans约定,因此该方法应该是
public void setConn(IConnection conn){
this.conn = conn;
}
现在,仅仅因为你有一个spring XML文件,并且类路径中的spring jar不会让Spring神奇地运行并注入依赖项。您需要加载应用程序上下文,并从此上下文加载至少一个bean。这个bean将以递归方式注入所有依赖项。