web启动@Autowired不能自动注入
使用struts2,下面为action代码
Java代码
package com.edar.web.platform; import org.apache.struts2.convention.annotation.InterceptorRef; import org.apache.struts2.convention.annotation.InterceptorRefs; import org.apache.struts2.convention.annotation.Namespace; import org.apache.struts2.convention.annotation.Result; import org.apache.struts2.convention.annotation.Results; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.stereotype.Component; import com.edar.components.AccountBean; import com.edar.dao.util.Page; import com.edar.model.Account; import com.edar.service.platform.AccountService; import com.edar.web.struts2.GenericAction; @Component @Namespace("/platform") @InterceptorRefs( { @InterceptorRef("paramsPrepareParamsStack") }) @Results( { @Result(name = GenericAction.RELOAD, location = "account.action", type = "redirect") }) public class AccountAction extends GenericAction<AccountBean> { private static final long serialVersionUID = 1900042912756344244L; @Autowired @Qualifier("accountServiceImpl") private AccountService accountService; private AccountBean accountBean; private Page<AccountBean> page = new Page<AccountBean>(16,true); public AccountBean getAccountBean() { return accountBean; } public void setAccountBean(final AccountBean accountBean) { this.accountBean = accountBean; } public Page<AccountBean> getPage() { return page; } public void setPage(final Page<AccountBean> page) { this.page = page; } @Override public String delete(){ accountService.delete((Account) dozer.map(accountBean, Account.class)); return SUCCESS; } @Override public String list(){ page = accountService.getPage(accountBean); return SUCCESS; } @Override protected void prepareModel(){ if(accountBean==null){ accountBean = new AccountBean(); }else{ if(accountBean.getAccountId()!=null){ accountBean = (AccountBean)dozer.map(accountService.getAccount(accountBean.getAccountId()), AccountBean.class); } } } @Override public String save(){ Account account = (Account) dozer.map(accountBean, Account.class); accountService.save(account); accountBean.setAccountId(account.getAccountId()); return SUCCESS; } public AccountBean getModel() { return accountBean; } }
package com.edar.web.platform; import org.junit.After; import org.junit.AfterClass; import org.junit.Assert; import org.junit.Before; import org.junit.BeforeClass; import org.junit.Test; import org.springframework.beans.factory.annotation.Autowired; import com.edar.components.AccountBean; import com.edar.test.SpringContextTestCase; public class AccountActionTest extends SpringContextTestCase{ private static Long accountId; @Autowired private AccountAction accountAction; @BeforeClass public static void setUpBeforeClass() throws Exception { } @AfterClass public static void tearDownAfterClass() throws Exception { } @Before public void setUp() throws Exception { AccountBean bean = new AccountBean(); bean.setName("ysheng53"); bean.setMobile("13819181747"); bean.setEmail("ysheng53@gmail.com"); bean.setPasswd("321"); accountAction.setAccountBean(bean); } @After public void tearDown() throws Exception { } @Test public void testSave() { String result = accountAction.save(); accountId = accountAction.getAccountBean().getAccountId(); Assert.assertEquals(AccountAction.SUCCESS, result); } @Test public void testList() { String result = accountAction.list(); Assert.assertEquals(AccountAction.SUCCESS, result); Assert.assertTrue(" 结果数小于0了 ",accountAction.getPage().getTotal()>0); } @Test(timeout=5000) public void testDelete() { accountAction.getAccountBean().setAccountId(accountId); String result = accountAction.delete(); Assert.assertEquals(AccountAction.SUCCESS, result); Assert.assertTrue("<=0",accountAction.getPage().getTotal()<=0); } }
@Autowired@Qualifier("accountServiceImpl")private AccountService accountService;
struts.devMode = truestruts.locale=zh_cnstruts.i18n.encoding=utf-8struts.objectFactory=spring