在 Micronaut 中使用 Spring HTTP 调用程序
Using Spring HTTP Invoker in Micronaut
我们有很多小型 Spring 启动应用程序,它们是迁移到 Micronaut 的潜在候选者。他们中的大多数使用 Springs HTTP Invoker 相互通信。
这是将执行远程调用的客户端服务 bean 的示例。
@Bean
public HttpInvokerProxyFactoryBean brokerService() {
HttpInvokerProxyFactoryBean invoker = buildHttpInvokerProxyFactoryBean();
invoker.setServiceUrl(remotingBaseUrl + BrokerService.URI);
invoker.setServiceInterface(BrokerService.class);
return invoker;
}
BrokerService
看起来像像这样
public interface BrokerService {
/**
* Creates a new offer of the given data.
*
* @param ctx All relevant data to create a new offer.
* @return the newly created offer instance.
*/
Offer createOffer(OfferCreationContext ctx);
}
Micronaut 中有没有办法使用 Spring HTTP 调用程序?
添加 spring 远程处理依赖项:
implementation 'org.springframework:spring-context:$version'
implementation 'org.springframework:spring-web:$version'
我没能以通常的方式注入代理,但这有效:
@Factory
public class RemotingConfig {
@Bean
@Singleton
public RemoteService remoteService(
@Value("${remoting.base.url:`http://localhost:8080`}")
String remotingBaseUrl) {
HttpInvokerProxyFactoryBean invoker = new HttpInvokerProxyFactoryBean();
invoker.setHttpInvokerRequestExecutor(new SimpleHttpInvokerRequestExecutor());
invoker.setServiceUrl(remotingBaseUrl + RemoteService.URI);
invoker.setServiceInterface(RemoteService.class);
// hack around lack of Spring infrastructure
invoker.afterPropertiesSet();
return (RemoteService) invoker.getObject();
}
}
然后就可以在Micronaut端@Inject RemoteService了。
对我们来说它有效,但我不知道为什么需要调用 afterPropertiesSet()。
我们有很多小型 Spring 启动应用程序,它们是迁移到 Micronaut 的潜在候选者。他们中的大多数使用 Springs HTTP Invoker 相互通信。
这是将执行远程调用的客户端服务 bean 的示例。
@Bean
public HttpInvokerProxyFactoryBean brokerService() {
HttpInvokerProxyFactoryBean invoker = buildHttpInvokerProxyFactoryBean();
invoker.setServiceUrl(remotingBaseUrl + BrokerService.URI);
invoker.setServiceInterface(BrokerService.class);
return invoker;
}
BrokerService
看起来像像这样
public interface BrokerService {
/**
* Creates a new offer of the given data.
*
* @param ctx All relevant data to create a new offer.
* @return the newly created offer instance.
*/
Offer createOffer(OfferCreationContext ctx);
}
Micronaut 中有没有办法使用 Spring HTTP 调用程序?
添加 spring 远程处理依赖项:
implementation 'org.springframework:spring-context:$version'
implementation 'org.springframework:spring-web:$version'
我没能以通常的方式注入代理,但这有效:
@Factory
public class RemotingConfig {
@Bean
@Singleton
public RemoteService remoteService(
@Value("${remoting.base.url:`http://localhost:8080`}")
String remotingBaseUrl) {
HttpInvokerProxyFactoryBean invoker = new HttpInvokerProxyFactoryBean();
invoker.setHttpInvokerRequestExecutor(new SimpleHttpInvokerRequestExecutor());
invoker.setServiceUrl(remotingBaseUrl + RemoteService.URI);
invoker.setServiceInterface(RemoteService.class);
// hack around lack of Spring infrastructure
invoker.afterPropertiesSet();
return (RemoteService) invoker.getObject();
}
}
然后就可以在Micronaut端@Inject RemoteService了。 对我们来说它有效,但我不知道为什么需要调用 afterPropertiesSet()。