2010-12-08 6 views
0

현재 Struts 2 + Spring 2.5를 사용하여 기존 프로젝트를 작업하고 있습니다. 하나 개의 액션 클래스가 있습니다struts 2 액션 클래스 인스턴스 변수 초기화

,의 어떤 내부, 같은 서비스 인터페이스 인 인스턴스 변수가, ActionA.java를 호출

클래스 ActionA {

// 변수

하자

protected ServiceAInterface serviceA; serviceA 방법

} 봄 빈 정의에

이용

// 동작 방법은, < 빈 ID 등 = "serviceA"클래스 = "com.company.serviceAImplementationClass"/ > 정의가

serviceA 변수의 초기화와 관련된 다른 곳을 찾지 못했는데,이 부분에 대해 올바른 구현 클래스를 찾고 초기화하는 것이 궁금합니다.

정말 나를 혼란스럽게합니다. 깨달음에 감사드립니다.

재키

+0

답변을 찾은 것 같습니다. struts-spring 플러그인이 거기에 놓이면, 그것은 struts objectFactory를 spring으로 설정합니다. 디폴트 자동 배선은 이름에 의한 다. 즉, 액션 객체를 초기화 한 후에는 속성 이름과 동일한 bean id를 갖는 스프링 빈을 사용하여 속성을 설정할 것이다. as, http://struts.apache.org/2.x/docs/spring-plugin.html – lwpro2

답변

0

한 가지 방법은 클래스에 다음

<bean id="serviceA" class="com.company.serviceAImplementationClass"/> 

<bean id="actionClassA" class="com.company.ActionA"> 
    <property name="serviceA" ref="serviceA"/> 
</bean> 

와 같은 서비스 빈을 정의 서비스 클래스 세터와 게터를 작성하는 것입니다.

class ActionA{ 

//variables 

protected ServiceAInterface serviceA; 

//action methods, utilizing serviceA methods 

public ServiceAInterface getServiceA() { 
    return this.serviceA; 
} 

public void setServiceA(ServiceAInterface serviceA) 
    this.serviceA = serviceA; 
} 

} 

그 것이다. 서비스 클래스 빈은 응용 프로그램을 시작하는 동안 봄에 초기화되며 참조 클래스는 작업 클래스에 할당됩니다.

+0

작업 클래스 bean 정의에 대해서는, 다음과 같이 속성을 구성하지 않더라도, 작업 클래스 내에 setter가 있고 bean 정의와 동일한 속성 이름이"serviceA "인 경우. 그것은 또한 작동합니다. 사실 내 질문입니다. 어쨌든 코멘트 주셔서 감사합니다. 그리고 저는 그 답을 직접 찾아 냈습니다. – lwpro2

+0

이것은 실제로 http://struts.apache.org/2.0.8/docs/spring-plugin.html에서 참조 할 수 있습니다. 게다가, 디버그 모드를 사용하여, 나는 실제로 의존성이 실행되는 프로세스의 과정에서만 주입된다는 것을 발견했다. – lwpro2

관련 문제