2011-09-16 3 views
2

Spring IOC을 처음 접했을 때이 방법을 응용 프로그램 컨텍스트 xml의 bean 정의로 어떻게 변환 할 수 있습니까? 응용 프로그램 컨텍스트 (Spring)의 Java bean 정의

import com.sun.jersey.api.client.Client; 
import com.sun.jersey.client.apache.ApacheHttpClient; 
import com.sun.jersey.client.apache.config.ApacheHttpClientConfig; 
import com.sun.jersey.client.apache.config.DefaultApacheHttpClientConfig; 

public static Client getRestClient() { 
    // configuration for jersey client 
    ApacheHttpClientConfig config = new DefaultApacheHttpClientConfig(); 
    Map<String, Object> properties = config.getProperties(); 
    properties.put(ApacheHttpClientConfig.PROPERTY_CONNECT_TIMEOUT, 
      RESTUtil.dispatcherHttpTimeOut); 

    // create client 
    return ApacheHttpClient.create(config); 
} 

더 자세히 :

<!-- Apache http rest client --> 
<bean id="apacheHttpClient" name="Rest Client" 
    class="com.sun.jersey.client.apache.ApacheHttpClient" factory-method="create"> 
    <constructor-arg></constructor-arg> 
</bean> 

저를주세요 : 나는 현재 내가 그걸 얻기 위해이 방법 (getRestClient)를 사용하기 때문에 이런 일이, 봄 IOC에서 클라이언트의 인스턴스를 얻으려면 더 많은 정보가 필요한지 확인하십시오.

+0

'메소드를 bean 정의로 변환'이라는 것이 확실하지 않습니다. 정확히 무엇을하고 싶니? –

답변

0
<bean id="apacheHttpClient" class="com.sun.jersey.client.apache.ApacheHttpClient" 
     factory-method="getRestClient"/> 

꽤 많이있는 것처럼 보입니다. 작동하지 않았습니까? 그런 다음이 빈을 속성 또는 생성자 arg로 참조를 사용해야하는 클래스에 전달해야합니다.

0

정적 팩토리 메소드를 사용하여 Bean을 작성하도록 Spring에게 알려주는 방법을 묻고 싶습니다.

This thread 도움이 될 수 있습니다.

<bean id="restClient" class="com.your.app.ClassWithTheFactoryMethod" factory-method="getRestClient"/> </bean>

이 내가 당신이 당신의 코드에서 한 정확히 을하고 올 수있는 가장 가까운

0

을 작동합니다. ApacheHttpClientConfig.PROPERTY_CONNECT_TIMEOUT의 값을 문자 그대로 참조해야하고 RESTUtil.dispatcherHttpTimeOut에 120을 입력해야합니다 (그 이유를 모르기 때문에). "# {120}"표현식은 String이 아닌 Integer로 해당 값을 전달해야하므로 예외가 발생합니다.

<!-- Apache http rest client --> 
<bean id="apacheHttpClient" name="Rest Client" 
    class="com.sun.jersey.client.apache.ApacheHttpClient" factory-method="create"> 
    <constructor-arg> 
     <bean class="com.sun.jersey.client.apache.config.DefaultApacheHttpClientConfig"> 
      <property name="properties['com.sun.jersey.client.property.connectTimeout']" value="#{120}" /> 
     </bean> 
    </constructor-arg> 
</bean>