2014-03-12 8 views
1

CXF을 사용하여 일부 webservice 클라이언트 클래스를 자동 생성합니다.자동 생성 클래스를 주입하는 방법은 무엇입니까?

@WebServiceClient 
public class TheService extends Service { 
} 

지금까지 내가 new TheService() 이러한 서비스를 사용하지만, 내가 Spring을 사용하고 있습니다로 지금은 내 자동 생성 된 클래스를 주입하고 싶습니다 : 결과는 유사가 보인다. 미래에 재생성 될 수 있으므로 생성 된 클래스를 편집하는 것은 좋은 생각이 아닙니다 (예 : 웹 서비스 업데이트). 그래서 저는 예를 들어 @Service으로 주석을 달 수 없습니다.

하지만 어떻게하면 @Autowired private TheService service을 사용할 수 있습니까? 그것은 가능하지 않습니까?

답변

1

클라이언트 클래스가 생성 될 때마다 클래스 이름이 변경 될 가능성이있는 경우 (웹 서비스 클라이언트 스텁 생성을 위해 Axis 1.1에서 Axis 2로 업그레이드 할 때이 클래스 이름이 변경됨) 스프링으로 시도 할 수 있습니다 어노테이션 대신 XML 구성.

<bean id="clientStub" class="com.package1.TheService"> 
    .... 
    </bean> 

액세스하려는 클래스에서이 id (clientstub)를 참조하십시오.

<bean id="accessingClass" class="com.package2.AccessingClass"> 
     <property name="service" ref="clientStub" /> 
    </bean> 
    Public class AccessingClass{ 
     private Service service; 
     .... 
    } 

만이 변화가 ID = "clientStub"와 빈 정의의 (생성 된 클래스 이름) 클래스에 따라서 TheService 클래스 이름을 변경 흡수 될 것입니다해야두고 당신은 변경할 필요 없다 이 클라이언트 스텁에 접근하는 클래스에서 Spring은 id에 의한 변경을 처리한다.

+0

주석 대신 xml 구성을 사용하는 것이 좋습니다. – membersound

관련 문제