今天嘗試使用spring註解自動注入bean,但是遇到一個問題:無法在Action中使用@Autowired註解自動注入bean,而在業務bean中可以注入Dao bean,非常奇怪,經過尋找解決了問題。
我的Action代碼如下:
@Result(name = "success", location = "hello.jsp") public class UserAction extends ActionSupport { private static final long serialVersionUID = 1L; @Autowired private UserManager userManager; public String execute() { User user = new User(); user.setUsername("cuihaiyang"); user.setPassword("abcd"); ////使用@Autowired無法注入userManager,但是可以從ApplicationContext裡擷取,這說明已經通過註解@Service自動添加了userManager bean到spring容器中 // String[] paths = { "applicationContext.xml" }; // ApplicationContext context = new // ClassPathXmlApplicationContext(paths); // userManager = (UserManager) context.getBean("userManager"); //使用註解@Autowired時此處userManager為null,並未注入 userManager.add(user); return SUCCESS; } }
後來,在http://blog.csdn.net/HMC20071120015/archive/2010/06/22/5686382.aspx中看到替換jar可以解決問題,我試著使用開發項目中的jar替換自己建立項目中的jar,結果注入成功了,這說明配置沒有問題是jar包有問題。接下來通過一點點的對比尋找有問題的jar包,最後發現是缺少了struts2-spring-plugin.jar。自己對SSH機構不熟導致的低級錯誤啊。。。。