我正在尝试将grpcService集成到我的spring boot应用程序中。在这个服务类中,我有一个jpaRepository,它是@Autowired。当我运行服务器时,没有注入这个存储库(当我试图使用它时,它是null )。
@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时,我意识到它是空的。提前感谢:)。
发布于 2019-11-10 07:38:32
因为您是用“MedicationPlanService”创建新的,所以它变成了一个简单的对象,而不是一个bean。像DI这样的东西不会以这种方式工作。
正确初始化这两个类(通过@Configuration类中的@ComponentScan或@Bean )。然后将MedicationPlanService注入到GrpcServerStartConfiguration中。后者您可以将其标记为@Configuration,以便更好地理解btw。
https://stackoverflow.com/questions/58784471
复制相似问题