복붙노트

[SPRING] Spring이 applicationContext.xml에 정의되지 않은 Struts 액션에서 속성을 주입하는 방법

SPRING

Spring이 applicationContext.xml에 정의되지 않은 Struts 액션에서 속성을 주입하는 방법

나는 Spring 3 + Struts 2 + Hibernate 3과 같은 프레임 워크를 가진 프로젝트에있다. 또한 스프링 보안을 사용한다.

Spring과 Struts는 web.xml에 정의 된 Spring ContextLoaderListener를 사용하여 통합됩니다.

<listener>
    <display-name>Spring Initialization</display-name>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>

대개 db 호출을하는 여러 서비스 클래스가 있습니다. agentserviceprocess는 getAgents ()와 같은 메소드를 갖는 클래스입니다.

Struts 액션은 각 프로세스에 대한 프로퍼티와 세터 게터를 가지며, 이들 프로세스 클래스는 application-context.xml에 빈으로 정의됩니다.

놀랍게도 클래스 매개 변수로 작업 클래스가있는 bean을 찾을 수 없습니다. 나는 스프링이 액션 객체 인스턴스를 제어하지 않는다는 것을 의미한다. 그렇다면 봄이 이러한 행동들 속에서 서비스 속성 객체들을 어떻게 주입 할 수 있을까요?

또한, 나는 다음과 같은 항목을 발견했다.

<filter>
    <filter-name>struts</filter-name>
    <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>
<filter-mapping>
    <filter-name>struts</filter-name>
    <url-pattern>*.action</url-pattern>
    <url-pattern>*.htm</url-pattern>
    <dispatcher>REQUEST</dispatcher>
    <dispatcher>FORWARD</dispatcher>
</filter-mapping>

해결법

  1. ==============================

    1.스프링과의 통합을 위해서는 struts2-spring 플러그인을 사용해야합니다. 이 플러그인이로드되면 플러그인 구성이 자체 객체 팩토리를 사용하여 조치 클래스를 인스턴스화하는 데 적용됩니다. action instanses가 빌드 될 때 autowiring을 위해 spring으로 전달합니다. autowired를 위해 속성의 getter와 setter를 제공해야합니다. 또한 종속성에 대한 스프링 구성을 제공합니다.

    스프링과의 통합을 위해서는 struts2-spring 플러그인을 사용해야합니다. 이 플러그인이로드되면 플러그인 구성이 자체 객체 팩토리를 사용하여 조치 클래스를 인스턴스화하는 데 적용됩니다. action instanses가 빌드 될 때 autowiring을 위해 spring으로 전달합니다. autowired를 위해 속성의 getter와 setter를 제공해야합니다. 또한 종속성에 대한 스프링 구성을 제공합니다.

  2. from https://stackoverflow.com/questions/28476069/how-spring-is-injecting-properties-in-struts-actions-that-are-not-defined-in-ap by cc-by-sa and MIT license