2011-09-01 13 views
8

Sto provando a migrare Spring da XmlApplicationContext a AnnotationConfigApplicationContext (ulteriori informazioni: Java-based container configuration).Spring HttpRemoting client come bean di configurazione Java

Tutto funziona perfettamente ma non so come creare un client HttpInvoker. La configurazione XML è la seguente:

<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> 

Come dovrebbe apparire la configurazione Java? Ho ancora bisogno di questo Factory Bean? Penso che uno dovrebbe essere in grado di creare un'istanza del client senza questo wrapper con questo metodo di configurazione.

Questo (in qualche modo) si sente male a me:

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

lettura Rilevante: http://blog.springsource.com/2011/08/10/beyond-the-factorybean –

risposta

8

In realtà, il corretto (ed equivalenti) versione sarebbe la ancora più imbarazzante:

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

(Dopo tutto quello che di solito si desidera che il FactoryBean da gestire da Spring, non da Bean restituisce)

Vedere questo recente articolo per riferimento:

What's a FactoryBean?

Problemi correlati