Java Spring,如何决定客户应该使用哪种服务?

Java Spring,如何决定客户应该使用哪种服务?,java,spring,Java,Spring,是否有可能从客户端调用服务器上的服务方法,如: someServiceHolder.getService(MyService.class).runMethodOnServerWithConsumer("myConsumerService#consumerA") 方法如下: public void runMethodOnServerWithConsumer(String consumerMethodName) { Consumer<Object> consumerA = someh

是否有可能从客户端调用服务器上的服务方法,如:

someServiceHolder.getService(MyService.class).runMethodOnServerWithConsumer("myConsumerService#consumerA")
方法如下:

public void runMethodOnServerWithConsumer(String consumerMethodName) {
 Consumer<Object> consumerA = somehowGetConsumerInstance(consumerMethodName);
  consumerA.accept(doSomething());
}
public void runMethodOnServerWithConsumer(字符串consumerMethodName){
Consumer consumerA=somehowGetConsumerInstance(consumerMethodName);
消费者接受(doSomething());
}
这可能不仅仅和春天有关。也许更一般地说,如何解决序列化方法的不可能性?

是的,您可以使用RMI(远程方法调用)。 Java远程方法调用允许调用驻留在不同Java虚拟机中的对象。SpringRemoting允许以更简单、更干净的方式利用RMI

您需要在服务器上有以下代码

@Bean
public RmiServiceExporter exporter(MyService implementation) {
    Class<MyService> serviceInterface = MyService.class;
    RmiServiceExporter exporter = new RmiServiceExporter();
    exporter.setServiceInterface(serviceInterface);
    exporter.setService(implementation);
    exporter.setServiceName(serviceInterface.getSimpleName());
    exporter.setRegistryPort(1099); 
    return exporter;
}
之后,您可以在客户端应用程序上调用所需的方法:

SpringApplication.run(App.class, args).getBean(MyService.class);
service.method("test");
你可以找到更多关于

SpringApplication.run(App.class, args).getBean(MyService.class);
service.method("test");