Spring HttpRemoting客户端作为Java配置Bean

Mik*_*cki 8 java spring spring-remoting

我正在尝试将Spring迁移XmlApplicationContextAnnotationConfigApplicationContext(更多信息:基于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>
Run Code Online (Sandbox Code Playgroud)

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();
}
Run Code Online (Sandbox Code Playgroud)

Sea*_*oyd 8

实际上,正确的(和等效的)版本将更加尴尬:

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

(毕竟你通常希望FactoryBean由Spring管理,而不是它返回的Bean)

请参阅此最近的文章以供参考:

什么是FactoryBean?