java B2B2C Springboot電子商務平臺原始碼-Feign 基本使用

小兵2147775633發表於2019-02-15

1、 【microcloud-consumer-feign】為了可以使用到 feign 支援,需要修改 pom.xml 配置檔案,引入相關依賴包:需要JAVA Spring Cloud大型企業分散式微服務雲構建的B2B2C電子商務平臺原始碼 一零三八七七四六二六

        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-feign</artifactId>
        </dependency>
複製程式碼

feign 包含了 Ribbon 支援,所以匯入了以上的依賴包之後就表示專案之中已經存在有了 ribbon 相關支援庫。

2、 【microcloud-service】建立一個新的模組,這個模組專門負責客戶端介面的定義;

3、 【microcloud-service】修改 pom.xml 配置檔案,引用“microcloud-api”模組,這樣就可以使用到 VO 類了;

        <dependency>
            <groupId>cn.study</groupId>
            <artifactId>microcloud-api</artifactId>
        </dependency>
複製程式碼

4、 【microcloud-service】此時如果要通過 Feign 進行遠端 Rest 呼叫,那麼必須要考慮服務的認證問題。

此時可以刪除原始的 RestConfig 進行的配置處理,然後新增feign的認證配置類

package cn.study.commons.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import feign.auth.BasicAuthRequestInterceptor;
@Configuration
public class FeignClientConfig {
    @Bean
    public BasicAuthRequestInterceptor getBasicAuthRequestInterceptor() {
        return new BasicAuthRequestInterceptor("studyjava", "hello");
    }
}
複製程式碼

5、 【microcloud-service】建立一個 IDeptClientService 介面;

package cn.study.service;

import java.util.List;

import org.springframework.cloud.netflix.feign.FeignClient;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

import cn.study.commons.config.FeignClientConfig;
import cn.study.vo.Dept;
/**
 * 通過註解@FeignClient新增介面對應的遠端微服務名稱value="MICROCLOUD-PROVIDER-DEPT"和
 * 服務的認證configuration=FeignClientConfig.class
 *
 */
@FeignClient(value="MICROCLOUD-PROVIDER-DEPT",configuration=FeignClientConfig.class)
public interface IDeptClientService {
    @RequestMapping(method=RequestMethod.GET,value="/dept/get/{id}")
    public Dept get(@PathVariable("id") long id) ;
    @RequestMapping(method=RequestMethod.GET,value="/dept/list")
    public List<Dept> list() ;
    @RequestMapping(method=RequestMethod.POST,value="/dept/add")
    public boolean add(Dept dept) ;
}
複製程式碼

6、 【microcloud-consumer-feign】修改 pom.xml 配置檔案,引入 microcloud-service 開發包:

        <dependency>
            <groupId>cn.study</groupId>
            <artifactId>microcloud-service</artifactId>
        </dependency>
複製程式碼

7、 【microcloud-consumer-feign】修改 ConsumerDeptController 控制器程式類;

package cn.study.microcloud.controller;

import javax.annotation.Resource;

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import cn.study.service.IDeptClientService;
import cn.study.vo.Dept;

@RestController
public class ConsumerDeptController {
    @Resource
    private IDeptClientService deptService ;
    @RequestMapping(value = "/consumer/dept/get")
    public Object getDept(long id) {
        return this.deptService.get(id);
    }
    @RequestMapping(value = "/consumer/dept/list")
    public Object listDept() {
        return this.deptService.list();
    }
    @RequestMapping(value = "/consumer/dept/add")
    public Object addDept(Dept dept) throws Exception {
        return this.deptService.add(dept);
    }
}
複製程式碼

8、 【microcloud-consumer-feign】修改程式啟動主類,追加操作處理。

package cn.study.microcloud;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient;
import org.springframework.cloud.netflix.feign.EnableFeignClients;
@SpringBootApplication
@EnableEurekaClient
@EnableFeignClients(basePackages={"cn.study.service"})//進行介面IDeptClientService的掃描生成使得可以注入到ConsumerDeptController裡面
public class Consumer_80_StartSpringCloudApplication {
    public static void main(String[] args) {
        SpringApplication.run(Consumer_80_StartSpringCloudApplication.class,
                args);
    }
}
複製程式碼

9、 啟動測試:client.com/consumer/de… ,可以發現 Feign 在處理的時候自帶有負載均衡的配置項。java B2B2C Springboot電子商務平臺原始碼

相關文章