Micronaut RxHttpClient null - PullRequest
       9

Micronaut RxHttpClient null

0 голосов
/ 13 марта 2019

Я тестирую возможности RxHttpClient.

Я создал простой сервис, работающий на http://localhost:8086, к которому я обращаюсь из другого сервиса, работающего на http://localhost:8080.После выполнения документации по микроавтобусу для инициализации RxHttpClient я вижу, что RxHttpClient по-прежнему равен NULL.Вот клиентская реализация

import io.micronaut.http.client.RxHttpClient;
import io.micronaut.http.client.annotation.Client;
import io.reactivex.Flowable;

import javax.inject.Inject;
import javax.inject.Singleton;

@Singleton
public class TestClient {

    @Inject
    @Client("http://localhost:8086")
    RxHttpClient httpClient;

    public Flowable<String> getRandomName(){

        System.out.println("getRandomName invoked => " + httpClient);

        return Flowable.just("test");
    }
}

Возможно, я что-то здесь упускаю, какие-либо предложения относительно того, что здесь может отсутствовать?

1 Ответ

1 голос
/ 13 марта 2019

Трудно сказать, что не так, не видя проект, который демонстрирует проблему, но я ожидаю, что что-то неправильно настроено в проекте, или вы создаете экземпляр компонента, а не позволяете контейнеру DI создать его для вас.

См. Проект на https://github.com/jeffbrown/mithrandirclient.

https://github.com/jeffbrown/mithrandirclient/blob/2c86d361db42f9beff4bb7620789fd4e422941d0/src/main/java/mithrandirclient/TestClient.java

package mithrandirclient;

import io.micronaut.http.client.RxHttpClient;
import io.micronaut.http.client.annotation.Client;

import javax.inject.Inject;
import javax.inject.Singleton;

@Singleton
public class TestClient {

    @Inject
    @Client("http://localhost:8086")
    RxHttpClient httpClient;

    public String getRandomName(){

        System.out.println("getRandomName invoked => " + httpClient);

        return "Some Random Name";
    }
}

https://github.com/jeffbrown/mithrandirclient/blob/master/src/main/java/mithrandirclient/DemoController.java

package mithrandirclient;

import io.micronaut.http.annotation.Controller;
import io.micronaut.http.annotation.Get;

@Controller("/demo")
public class DemoController {

    private TestClient testClient;

    public DemoController(TestClient testClient) {
        this.testClient = testClient;
    }

    @Get("/")
    public String index() {
        return testClient.getRandomName();
    }
}

Когда я отправляю запрос контроллеру, Я получаю ожидаемый результат:

$ curl http://localhost:8080/demo
Some Random Name

Консоль сервера показывает, что клиент на самом деле не null:

getRandomName invoked => io.micronaut.http.client.DefaultHttpClient@39ce2d3d

ОБНОВЛЕНИЕ:

При коммите в https://github.com/jeffbrown/mithrandirclient/commit/0ba0216bca4f31ee3ff296579b829ab4615fa6db код больше похож на код в исходном вопросе, но результат тот же.Инъекция работает, а клиент не null.

...