无法获得Spring依赖注入工作

时间:2012-01-01 13:39:32

标签: java spring dependency-injection annotations

我几乎是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是否正在尝试注入任何东西

2 个答案:

答案 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将以递归方式注入所有依赖项。

有关示例,请参阅http://static.springsource.org/spring/docs/3.1.x/spring-framework-reference/htmlsingle/spring-framework-reference.html#beans-factory-instantiation