sunships
2013-01-22 16:28
浏览 417
已采纳

在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]

  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

7条回答 默认 最新

  • iteye_7589 2013-01-23 14:07
    已采纳

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

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

    楼主是action里autowired没起作用。

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

    struts2-spring-plugin

    pom的dependency.

    org.apache.struts
    struts2-spring-plugin
    2.2.1


    org.springframework
    spring


    已采纳该答案
    打赏 评论
  • 能把spring的配置信息帖出来吗?

    打赏 评论
  • iteye_2178 2013-01-22 17:43

    没见到ArticleAction 的配置啊

    打赏 评论
  • iteye_7589 2013-01-22 21:21

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


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

    打赏 评论
  • mythsaa 2013-01-23 11:06

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

    打赏 评论
  • iteye_7589 2013-01-23 13:42

    我说的不准确,

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


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


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

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

    打赏 评论
  • iteye_7589 2013-01-23 13:46

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

    那篇文章说不用

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

    打赏 评论

相关推荐 更多相似问题