2011-09-01 26 views
8

Estoy intentando migrar Spring desde XmlApplicationContext hasta AnnotationConfigApplicationContext (más información: Java-based container configuration).Spring HttpRemoting client como Java Configuration Bean

Todo funciona perfectamente pero no sé cómo crear un cliente HttpInvoker. La configuración XML es la siguiente:

<bean id="httpInvokerProxy" class="org.springframework.remoting.httpinvoker.HttpInvokerProxyFactoryBean"> 
    <property name="serviceUrl" value="http://remotehost:8080/remoting/AccountService"/> 
    <property name="serviceInterface" value="example.AccountService"/> 
</bean> 

¿Cómo debe verse la configuración de Java? ¿Todavía necesito este Factory Bean? Creo que uno debería ser capaz de crear una instancia del cliente sin este envoltorio con este método de configuración.

Este (de alguna manera) se siente mal a mí:

public @Bean AccountService httpInvokerProxy() { 
    HttpInvokerProxyFactoryBean proxy = new HttpInvokerProxyFactoryBean(); 
    proxy.setServiceInterface(AccountService.class); 
    proxy.setServiceUrl("http://remotehost:8080/remoting/AccountService"); 
    proxy.afterPropertiesSet(); 
    return (AccountService) proxy.getObject(); 
} 
+0

lectura relevantes: http://blog.springsource.com/2011/08/10/beyond-the-factorybean –

Respuesta

8

En realidad, la versión correcta (y equivalentes) sería la más incómoda:

public @Bean HttpInvokerProxyFactoryBean httpInvokerProxy() { 
    HttpInvokerProxyFactoryBean proxy = new HttpInvokerProxyFactoryBean(); 
    proxy.setServiceInterface(AccountService.class); 
    proxy.setServiceUrl("http://remotehost:8080/remoting/AccountService"); 
    return proxy; 
} 

(Después de todo lo que normalmente se desea la FactoryBean será administrado por Spring, no por el Bean que devuelve)

Ver este artículo reciente a modo de referencia:

What's a FactoryBean?

Cuestiones relacionadas