Spring HttpRemoting клиент как компонент конфигурации Java - PullRequest
8 голосов
/ 01 сентября 2011

Я пытаюсь перевести Spring с XmlApplicationContext на AnnotationConfigApplicationContext (больше информации: Конфигурация контейнера на основе Java ).

Все работает отлично, но я не знаю, как создать клиент HttpInvoker. Конфигурация XML выглядит следующим образом:

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

Как должна выглядеть конфигурация Java? Мне все еще нужен этот Боб Фабрики? Я думаю, что с помощью этого метода конфигурации можно создать экземпляр клиента без этой оболочки.

Это (как-то) мне плохо:

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();
}

1 Ответ

8 голосов
/ 01 сентября 2011

На самом деле, правильная (и эквивалентная) версия будет еще более неуклюжей:

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

(В конце концов, вы обычно хотите, чтобы FactoryBean управлялся Spring, а не Bean, который он возвращает)

См. Эту недавнюю статью для справки:

Что такое FactoryBean?

...