WebWork2-Spring #

Last changed on Jun 09, 2004 by Cuong Tran
번역 허태명

Spring은 무엇이며 왜 Spring을 WebWork에서 사용하기를 원하는가?
Spring에 관한 더 자세한 사항은 http://www.springframework.org 을 참조하라.
요약하면, Spring은 몇 가지 다른 계층을 제공한다. 예를 들어, Spring IoC 컨테이너는 객체들이 사용하는 서비스와 같은 객체의 의존성을 서로 투명하게 연결해주는 뛰어난 방법을 제공한다. 또한 AOP 프레임워크를 이용하여 일반 자바 빈에 트랜잭션 기능을 제공할 수 있다. Spring은 또한 WebWork과 같은 MVC 프레임워크도 제공한다. WebWork이 더 좋은 MVC 프레임워크라고 믿는 사람들이 있기 때문에, MVC 프레임워크로서 WebWork을 선택하고 Spring에서 제공하는 나머지 부분을 연동시켜 보자. WebWork에 Spring을 연동하는 방법은 몇 가지가 있다.

SpringObjectFactory의 사용
dev.java.net의 xwork-optional 패키지는 WebWork에서 Spring을 사용하기 위해 필요한 모든 코드를 가지고 있는 xwork-spring 모듈을 포함하고 있다. 그것은 주로 WebWork에 Action 이 전달되기 전에 Action에 필요한 의존성을 연결해주는 SpringObjectFactory에 관한 것이다. 각 Action은 Spring application context에서 prototype(singleton="false"를 의미)으로서 설정되어야만 한다.(왜냐하면 WebWork은 모든 Action 호출에 대해 새로운 Action 인스턴스를 생성해서 사용하기 때문이다.) 이러한 것을 Spring의 applicationContext.xml에 설정하라:

<bean name="some-action" class="fully.qualified.class.name" singleton="false">
    <property name="someProperty"><ref bean="someOtherBean"/></property>
</bean>
그리고 xwork.xml에서:
<action name="myAction" class="some-action">
    <result name="success">view.jsp</result>
</action>

WebWork Action class가 Spring application context에서 bean name으로 정의된 some-action인 것을 주목하라.
SpringObjectFactory 방식의 또 다른 이점은 같은 종류의 로직을 사용하는 인터셉터들을 로드하기 위해 SpringObjectFactory를 사용할 수 있다는 것이다. 인터셉터가 무상태라면, 인터셉터를 싱글턴 인스턴스로서 생성하는 것이 가능하다. 그러나 그렇지 않다면 Spring의 prototype으로 생성하는 것이 가장 좋을 것이다.
이렇게 사용하기 위해, WebWork이 사용하는 기본 ObjectFactory를 SpringObjectFactory의 인스턴스로 대체해야 한다. xwork-optional 패키지는 Spring application context가 이미 설정되었다고 가정하고 이러한 것을 사용할 수 있게하는 ContextListener가 내장되어 있다. 다음을 web.xml에 추가하라:

<!-- 이것은 Spring ContextLoaderListener 다음에 필요하다. -->
<listener>
  <listener-class>com.opensymphony.xwork.spring.SpringObjectFactoryListener</listener-class>
</listener>
주: 이것은 실제 XWork의 설정에 관련된 내용이지만 간단하게 하기 위해 WebWork의 설정으로 가정했다.

Add new attachment

Only authorized users are allowed to upload new attachments.
« This page (revision-1) was last changed on 06-Apr-2006 09:45 by UnknownAuthor