RestTemplate:
まず、プロジェクトのコントローラーにインターフェースを記述します。
彼のアプリケーション名はserverです。
spring:
application:
name: server
しかし実際には、eurekaを開いたときに表示されるものはSERVERで大文字になっています。
。。。。。。。。。。。。。
2番目のプロジェクトを開く:最初のプロジェクトでインターフェースを呼び出す
最初の方法:直接呼び出す
RestTemplate restTemplate=new RestTemplate();
String msg=restTemplate.getForObject("http://localhost:8080/server/msg",String.class);
log.info("msg:{}",msg);
2番目の方法:LoadBalanceClientを使用します。
相手が複数のプロジェクトを開いてクラスターに参加している場合は、クライアントのデフォルトのポーリング方法であるLoadBalanceClientを使用して、呼び出す方法を1つ選択します。ここでの意味は、このアプリケーションの名前を付けることです。複数のアプリケーション(ここではSERVERアプリケーションを意味します。これは私のプロジェクトを意味します)を開くと、アプリケーションが1つ選択されます。getHostとgetPortを使用して、どちらが指定したかを確認し、RestTemplateで呼び出します。
ServiceInstance serviceInstance=loadBalancerClient.choose("SERVER");
String url= String.format("http://%s:%s/server/msg",serviceInstance.getHost(),serviceInstance.getPort());
RestTemplate restTemplate=new RestTemplate();
String msg=restTemplate.getForObject(url,String.class);
log.info("msg:{}",msg);
3番目のメソッド:2番目のメソッドの単純な処理:
ここではRestTemplateの処理、次に春の処理へ:
コントローラーで呼び出すことができます:
最初にrestTemplateを注入します
@Resource
private RestTemplate restTemplate;
次に電話してください:
String msg=restTemplate.getForObject("http://SERVER/server/msg",String.class);
log.info("msg:{}",msg);
ホストとポートは、アプリケーション名(SERVER)に直接変更できます。
簡単に@Beanアノテーションと@Resource
@Resourceが注入されるとき、名前はプロパティの名前であり、クラスではありません。
ここでは、BeanとしてSpringに与えた
ので、ここでメンバープロパティを定義するときに、同じ名前を記述する必要があります。
feign:
依存関係:ここは非常によくわかります。バージョンによって異なります。私はここが新しいです。古いmavenを使用すると、赤い依存関係が表示されます。ここにアップグレードされた依存関係があります:非常に完全:[アップグレードされた依存関係]、(https:// zhuanlan。 zhihu.com/p/111927645)
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
スタートアップクラスの注釈:@EnableFeignClients
apiを呼び出すインターフェイスクラスを記述します(ここにピットがあります!インターフェイスクラスの名前をFeignClientに設定しないでください。これはFeignClient自体と同じ名前です。エラーが発生します!!!)
@FeignClient(name = "server")
public interface Client {
@GetMapping("/server/msg")
String msg();
@GetMapping("/server/category")
List<ProductCategory> category();
}
@FeignClient(name = "server")はアプリケーション名を指定するため、プロジェクトはサーバーに設定されます。
次に、プロジェクト1で構成されたコントローラーの@RequestMappingがあります。
次に、コントローラーに書き込んだばかりのインターフェイスを挿入します
。feignを使用してインターフェイスを呼び出します