Spring 入门学习例子

Spring  入门学习例子--》自动的petstore 项目

 

http://www.javaeye.com/topic/69750

这个方法会在action初始化的时候调用,这样在action初始化的时候就把spring管理的bean付给了action(作为action的全局变量),但是要注意的是在action中只有无状态的对象才能作为action的全局变量哦.

private PetStoreFacade petStore;   
public void setServlet(ActionServlet actionServlet) {   
        super.setServlet(actionServlet);   
        if (actionServlet != null) {   
            ServletContext servletContext = actionServlet.getServletContext();   
            WebApplicationContext wac = WebApplicationContextUtils.getRequiredWebApplicationContext(servletContext);   
            this.petStore = (PetStoreFacade) wac.getBean("petStore");   
        }   
           
      System.out.println("俺已经初始化了么?");     
    }  
启动tomcat时候,没有输出该语句. 
我进入首页后,点击 Enter the Store,控制台输出了该语句,此时执行的DoNothingAction 
其代码如下: 

代码
public class DoNothingAction extends BaseAction {   
  
  /* Public Methods */  
  
  public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {   
    return mapping.findForward("success");   
  }   
}  


所以看来确实是在Action初始化的时候执行的该方法. 
不过每次执行一个BaseAction子类,setServlet()方法就要执行一次. 

 


参考资料:http://www.javaeye.com/topic/40646

通过在action 中重写setServlet () 避免了在每次的增删改查中调用bean :

 

public class StudentAction extends BaseAction {
 
 private IStudentService studentService ;//学生管理

// 重写,加入新的
 public void setServlet(ActionServlet actionServlet) {
  super.setServlet(actionServlet);
  studentService = (IStudentService) getCtx().getBean("studentSerivce");//
学生管理初始化  //原先需要在增刪改查调用的bean 的语句


 }

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

«    2024年11月    »
123
45678910
11121314151617
18192021222324
252627282930
搜索
标签列表
网站分类
最新留言
    文章归档
    友情链接

    Powered By Z-BlogPHP 1.7.3

    Copyright Your WebSite.Some Rights Reserved.闽ICP备11018667号-2