HttpInvokerServiceExporter 是一种将远程服务暴露为 HTTP URL 的方法,它可以与 Spring 的远程调用框架集成。Spring 5 推荐使用基于注释的远程调用,如使用 @RestController 和 @RequestBody 注释。
下面是使用基于注释的远程调用的示例:
定义接口:
public interface GreetingService {
String greet(String name);
}
实现接口:
@Service
public class GreetingServiceImpl implements GreetingService {
public String greet(String name) {
return "Hello, " + name + "!";
}
}
定义 RestController:
@RestController
@RequestMapping("/greeting")
public class GreetingController {
@Autowired
private GreetingService greetingService;
@PostMapping
public String greet(@RequestBody String name) {
return greetingService.greet(name);
}
}
通过 POST 请求远程调用:
HttpPost post = new HttpPost("http://localhost:8080/greeting");
StringEntity requestBody = new StringEntity("Alice");
post.setEntity(requestBody);
CloseableHttpClient httpClient = HttpClients.createDefault();
HttpResponse response = httpClient.execute(post);
String responseBody = EntityUtils.toString(response.getEntity());
System.out.println(responseBody);
这里通过 @RestController
和 @RequestMapping
注释定义了一个 RESTful 服务,使用 @Autowired
注释注入了 GreetingService
。
通过 POST 请求发送远程调用的例子中,HttpPost
发送请求,请求的 URL 是定义的 /greeting
,请求的主体是一个字符串("Alice")。请求执行后,处理响应的方法打印出响应主体。