Spring 독서 노트 (4) 와 Struts 통합

'스프링 개발 가이드' 는 struts 와 통합 하 는 방법 만 적 혀 있 고, 다른 하 나 는 스프링 2.0 데모 가 자체 적 으로 가 져 온 Doc 에서 액 션 이 Action Support 를 직접 계승 하 는 것 을 찾 았 다.자세 한 정보:
To integrate your Struts application with Spring, you have two options:
  • Configure Spring to manage your Actions as beans, using the ContextLoaderPlugin, and set their dependencies in a Spring context file.
  • Subclass Spring's ActionSupport classes and grab your Spring-managed beans explicitly using a getWebApplicationContext() method.

  • 16.3.2. ActionSupport Classes
    As previously mentioned, you can retrieve the WebApplicationContext from the ServletContext using the WebApplicationContextUtils class. An easier way is to extend Spring's Action classes for Struts. For example, instead of subclassing Struts' Action class, you can subclass Spring's ActionSupport class.
    The ActionSupport class provides additional convenience methods, like getWebApplicationContext(). Below is an example of how you might use this in an Action:
    public class UserAction extends DispatchActionSupport {
    
        public ActionForward execute(ActionMapping mapping,
                                     ActionForm form,
                                     HttpServletRequest request,
                                     HttpServletResponse response)
                throws Exception {
            if (log.isDebugEnabled()) {
                log.debug("entering 'delete' method...");
            }
    
            WebApplicationContext ctx = getWebApplicationContext();
            UserManager mgr = (UserManager) ctx.getBean("userManager");
    
            // talk to manager for business logic
    
            return mapping.findForward("success");
        }
    }

    Spring includes subclasses for all of the standard Struts Actions - the Spring versions merely have Support appended to the name:
  • ActionSupport,
  • DispatchActionSupport,
  • LookupDispatchActionSupport and
  • MappingDispatchActionSupport.

  • The recommended strategy is to use the approach that best suits your project. Subclassing makes your code more readable, and you know exactly how your dependencies are resolved. However, using the ContextLoaderPlugin allow you to easily add new dependencies in your context XML file. Either way, Spring provides some nice options for integrating the two frameworks.
    두 번 째 방법 이 더 간편 하 다 는 것 을 알 수 있다.
    JPetstore 예 에 서 는 이 방법 을 사용 하지 않 고 세 번 째 방법 을 사용 했다.마찬가지 로 액 션 만 움 직 여야 한다.다음 과 같다.
    public abstract class BaseAction extends 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");  } }
     protected PetStoreFacade getPetStore() {  return petStore; }
    } ok, 이 세 가지 방법 은 모두 Spring 과 Struts 를 통합 시 킬 수 있 습 니 다. 첫 번 째 방법 과 비교 할 수 있 습 니 다. (설정 이 많 기 때문에 여기 쓰 지 않 았 습 니 다. reference 16.3.1 참조) 두 번 째 방법 은 간결 하고 침입 이 많 지 않 습 니 다.

    좋은 웹페이지 즐겨찾기