Использование Spring HTTP Invoker в Micronaut - PullRequest
0 голосов
/ 13 ноября 2018

У нас есть множество небольших приложений Spring Boot, которые являются потенциальными кандидатами для перехода на Micronaut. Большинство из них используют Springer HTTP Invoker для связи друг с другом.

Вот пример клиентского компонента службы, который будет выполнять удаленный вызов.

  @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 Invoker?

1 Ответ

0 голосов
/ 16 мая 2019

Добавьте зависимости удаленного взаимодействия пружин:

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

Тогда вы можете @Inject RemoteService включитьсторона Микронавта.У нас это работает, но я не знаю, зачем нужен вызов afterPropertiesSet ().

...