SpringCoud Feignの使用概要
4361 ワード
概要
feignは声明式のweb serviceクライアントであり、マイクロサービス間の呼び出しをより簡単にした。Spring CloudはRibronとEurekaを統合しており、Feignを使用する際に負荷バランスのとれたhttpクライアントを提供することができます。
springcloudではRibboを用いて負荷の均衡だけでなくFeignも利用できます。FeignはRibbonを基礎とした改良を行い,負荷均衡をインターフェース方式で実現した。
使用導入依存 対応インターフェースを作成する
@Feign Client(value=「PROVIDER-NAME」)はFeign Clientであり、valueは必要なサービスIDを指定している。 Controllerを修正する
私たちはRertTemplateを使わずに必要なオブジェクトを取得します。以前に定義されたインターフェースを通じて取得します。起動クラスを修正する
@EnbaleFeign ClientsオープンFeign負荷バランス比較: Ribbon
Feignの使用はRibbonと違っています。 Feignはインタフェースを通して実現され、インタフェース向けプログラミングの習慣にもっと適合しています。 RibbonのControllerの中で私達はurlをつなぎ合わせなければならないが、Feignは私達のためにつなぎ合わせて を行った。
以上がSprigCloud Feignの使用概要の詳細です。SprigCloud Feignに関する資料は他の関連記事に注目してください。
feignは声明式のweb serviceクライアントであり、マイクロサービス間の呼び出しをより簡単にした。Spring CloudはRibronとEurekaを統合しており、Feignを使用する際に負荷バランスのとれたhttpクライアントを提供することができます。
springcloudではRibboを用いて負荷の均衡だけでなくFeignも利用できます。FeignはRibbonを基礎とした改良を行い,負荷均衡をインターフェース方式で実現した。
使用
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
@FeignClient(value = "PROVIDER-NAME")
public interface DeptClientService {
//
@RequestMapping(value = "/dev/add")
boolean add(Dept dept);
@RequestMapping(value = "/dev/{id}")
Dept queryByID(@PathVariable("id") Long id );
@PostMapping(value = "/dev/list")
List<Dept> queryAll();
}
@RestController
public class ConsumerController {
@Autowired
private DeptClientService service;
@RequestMapping("/consumer/get/{id}")
public Dept getByID(@PathVariable("id") Long id){
return this.service.queryByID(id);
}
@RequestMapping("/consumer/add")
public boolean add(String dname){
Dept dept = new Dept();
dept.setDname(dname);
return this.service.add(dept);
}
@RequestMapping("/consumer/list")
public List<Dept> list(){
return this.service.queryAll();
}
}
@SpringBootApplication(scanBasePackages = "com")
@EnableEurekaClient
@EnableFeignClients(basePackages = "com.service")
public class FeignApplication {
public static void main(String[] args) {
SpringApplication.run(FeignApplication.class,args);
}
}
public class ConsumerController {
@Autowired
private RestTemplate template;
private static final String url="http://PROVIDER-NAME";
@RequestMapping("/consumer/get/{id}")
public Dept getByID(@PathVariable long id){
// ,
Dept getEntity = template.getForObject(url + "/dev/" + id, Dept.class);
return getEntity;
}
@RequestMapping("/consumer/add")
public boolean add(String dname){
Dept dept = new Dept();
dept.setDname(dname);
System.out.println(dept);
// , ,
return template.postForObject(url+ "/dev/add",dept,Boolean.class);
}
@RequestMapping("/consumer/list")
public List<Dept> list(){
// ,
return template.postForObject(url+"/dev/list",void.class,List.class);
}
}
Feign
@RestController
public class ConsumerController {
@Autowired
private DeptClientService service;
@RequestMapping("/consumer/get/{id}")
public Dept getByID(@PathVariable("id") Long id){
return this.service.queryByID(id);
}
@RequestMapping("/consumer/add")
public boolean add(String dname){
Dept dept = new Dept();
dept.setDname(dname);
return this.service.add(dept);
}
@RequestMapping("/consumer/list")
public List<Dept> list(){
return this.service.queryAll();
}
}
締め括りをつけるFeignの使用はRibbonと違っています。
以上がSprigCloud Feignの使用概要の詳細です。SprigCloud Feignに関する資料は他の関連記事に注目してください。