8

我正在尝试将 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>

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

1 回答 1

8

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

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?

于 2011-09-01T10:52:35.340 回答