Grpc Spring Boot Starter - PullRequest
       23

Grpc Spring Boot Starter

0 голосов
/ 10 ноября 2019

Я пытаюсь интегрировать grpcService в мое приложение весенней загрузки. В этом классе обслуживания у меня есть jpaRepository, который @Autowired. Когда я запускаю сервер, этот репозиторий не внедряется (является нулевым, когда я пытаюсь его использовать).

@Service
public class MedicationPlanService extends medicationPlanGrpc.medicationPlanImplBase {

    @Autowired
    private MedicationPlanRepository medicationPlanRepository;


    @Override
    public void hello(MedicationPlan.HelloRequest request, StreamObserver<MedicationPlan.HelloResponse> responseObserver) {
        List<MedicationPlan> medicationPlans = medicationPlanRepository.findAll();


        MedicationPlan.HelloResponse.Builder response = MedicationPlan.HelloResponse.newBuilder();

        response.setResponseMessage("hello");

        responseObserver.onNext(response.build());
        responseObserver.onCompleted();
    }
}

@Component
public class GrpcServerStartConfiguration {

    @PostConstruct
    public void startGrpcServer() throws IOException, InterruptedException {
        Server server = ServerBuilder.forPort(9091).addService(new MedicationPlanService()).build();
        server.start();
        System.out.println("gRPC server started");
        server.awaitTermination();
    }
}

Когда я пытаюсь использовать medicationPlanRepository, я понял, что это пустое значение. Заранее спасибо:).

1 Ответ

0 голосов
/ 10 ноября 2019

Поскольку вы создаете MedicationPlanService с помощью «new», он становится простым объектом, а не бином. И такие вещи, как DI, не работают таким образом.

Инициализируйте эти 2 класса правильно (через @ComponentScan или @Bean в классе @Configuration). Затем введите MedicationPlanService в GrpcServerStartConfiguration. Последнее вы можете пометить как @Configuration для лучшего понимания кстати.

...