在action中对属性使用@Autowired注解自动注入失败

在下面的单元测试DataAccessTest类中articleManager输出不为null
[code="java"]
package sunships.dhcc.xtest;
...
public class DataAccessTest extends SpringTxTestCase {

@Autowired
private ArticleManager articleManager;

@Test
@Rollback(false)
public void addArticle() {
    System.out.println(articleManager);//非null值
    ......
}

}
[/code]
但同样如下面的代码,我在action类中的添加article方法中,获取的articleManager却为null
[code="java"]
package sunships.dhcc.web;
...
public class ArticleAction extends CrudActionSupport {

@Autowired
private ArticleManager articleManager;

...

@Override
public String save() throws Exception {
    System.out.println("aritcleAction:article->" + article.getSubject() + "  " + article.getContent());
    System.out.println("  " + articleManager);//输出为null
    articleManager.save(article);
    System.out.println("articleAction-save-divide--------------------");
    return RELOAD;
}

...
}[/code]

我错了,有段时间没改配置文件了。

回去查了我的struts2的配置
看起来不是配置问题。

楼主是action里autowired没起作用。

楼主 加了这个struts2的组件么?

struts2-spring-plugin

pom的dependency.

org.apache.struts
struts2-spring-plugin
2.2.1


org.springframework
spring


能把spring的配置信息帖出来吗?

没见到ArticleAction 的配置啊

spring配置文件里缺少
[b][/b]
这句话才是激活 对bean的annotation处理的。


这个只是搜索类,并作为bean加入ApplicationContext

单元测试可以自动注入,说明单元测试用的配置文件应该没有问题,但是却在Action里注入失败。看看测试环境用的配置文件是否和你部署程序的配置文件一致
要是有异常信息的话应该可以更快的确认出现问题的地方

我说的不准确,

参见这篇文章 [url]http://crud0906.iteye.com/blog/897586[/url]


这句话才是激活 Bean的属性上的自动注入相关的annotation处理:Autowired之类


这个只是搜索类,并按照类声明上的Annotation作为合适的bean加入ApplicationContext

因此,解决楼主问题的方法是加上

呃,没仔细看我引用的那篇文章。

那篇文章说不用

但是我的实践经验 (spring 3.x.RELEASE)
是要加的。