91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

springboot如何單獨使用feign簡化接口調用

發布時間:2022-03-01 13:37:04 來源:億速云 閱讀:714 作者:小新 欄目:開發技術

這篇文章主要介紹了springboot如何單獨使用feign簡化接口調用,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。

單獨使用feign簡化接口調用

與HttpClient和RestTemplate相比,使用springcloud的feign調用遠程接口更為簡便,可以通過配置的方式實現遠程接口調用。但是有時我們并不想使用springcloud,而只是想在springboot中使用feign,我在網上搜了很多springboot單獨集成feign的文章,但都不能用。在通過學習、開發后簡單整理了一個教程。詳細介紹如何在springboot中單獨集成feign,以簡便的方式調用遠程接口。

1.引入maven

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.2.2.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.example</groupId>
    <artifactId>demo</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>jar</packaging>
    <properties>
        <java.version>1.8</java.version>
        <maven.compiler.target>1.8</maven.compiler.target>
        <maven.compiler.source>1.8</maven.compiler.source>
        <!--添加springcloud版本-->
        <spring-cloud.version>Hoxton.SR1</spring-cloud.version>
    </properties>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>
        
        <!--lombok可自動生成getter、setter-->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
        <!--feign遠程接口調用-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-openfeign</artifactId>
        </dependency>
    </dependencies>
    <!--管理springcloud版本,引入openfeign時不用添加version-->
    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>${spring-cloud.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>
    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>
</project>

2.啟動類添加@EnableFeignClients注解

開啟feign

@EnableFeignClients //開啟feign
@SpringBootApplication
public class SpringbootApplication {
    public static void main(String[] args) {
        SpringApplication.run(SpringbootApplication.class, args);
    }
}

3.像平常一樣寫一個service接口

在此基礎上添加一些feign注解

@FeignClient(name = "userService",url = "${ip}:${port}/${base_url}")
public interface UserService {
    /**
     * 根據條件查詢用戶
     * @param user查詢參數
     * @return 用戶列表
     */
    @PostMapping("searchUsers")
    List<User> searchUsers(@RequestBody User user);
}

在service接口上添加@FeignClient注解,name為springbean的id,用于注入service時使用,url為ip地址

最終調用的接口地址為url加上@PostMapping的value。

@FeignClient的url可以使用配置文件中的參數。使用${參數名}引入即可。

對應的接口:

@RestController("/user")
public class UserController{
    @PostMapping("searchUsers")
    List<User> searchUsers(@RequestBody User user);
}

由此可見,在使用feign時,service方法的調用方式(get、post)和參數、參數格式、返回值格式需要和對應的接口保持一致

4.調用接口

@Autowired
private UserService userService;
/**
*查詢18歲的用戶并打印到控制臺
*/
public void printUsers(){
   User user = new User();
   user.setAge(18);
   List<User> userList = userService.searchUsers(user);
   System.out.println("userList = " + userList);
}

springboot feign調用方式比較

1.事發原因

兩個東家都使用SpringCloud,巴拉巴拉用上了Spring全家桶,從eureka到ribbon,從ribbon到feign,從feign到hystrix,然后在使用feign的時候發現使用方式不同,仔細一看這種調用方式,唉,麻煩,我怎么要自己定義DTO,自己定義Fallback, 自己定義方法呢?用上之后,其實發現各有各的好處,來記錄一下。

2.方式1介紹

我們在開發服務的時候,會把接口和實現分開, 即有一個API模塊和一個Service模塊,消費者依賴API的jar包,直接注入API中的Service,則可以直接通過Feign調用到對應的服務,

對應的項目結構如下:

springboot如何單獨使用feign簡化接口調用

我們在接口API中定義好方法,并加上Feign注解等(MICRO-PROVIDER2是服務名,注冊到Eureka Server上的名稱。

使用Feign還可以自己實現fallback,設置超時默認放回值。這里做測試,不寫過多代碼。)

具體的實現如下圖所示。

springboot如何單獨使用feign簡化接口調用

接下來就是我們如何在consumer中去消費這個服務了,我們會在service服務中,依賴api的jar包,實現Provider2Service即可。

具體的實現如下圖

springboot如何單獨使用feign簡化接口調用

代碼中的實現邏輯:

springboot如何單獨使用feign簡化接口調用

3.方式2介紹

這中方式介紹起來比較簡單。直接在消費者中定義新的service接口,通過Feign注解,定義方法,調用的url和被調用服務的url相同,實現邏輯如下。

springboot如何單獨使用feign簡化接口調用

4.調用結果測試

方式2:

springboot如何單獨使用feign簡化接口調用

方式1:

springboot如何單獨使用feign簡化接口調用

可以看到,兩種方式都是可以消費到服務(本質是一樣)。但是兩種方式各有好處和壞處,我們要來比較下,看看究竟哪一種才是我們需要的呢?

5.兩種方式對比  

通過兩種方式的對比,我們可以看到的優優劣勢主要有:

方式一:

 優點:

   1:服務消費者不用自己寫接口。

   2:可提供好Dto,Vo等直接給服務消費者。

 缺點:

   1:service需要依賴jar包,如果依賴服務過多,jar也會過多。

   2:給消費者暴露了過多的接口。部分與消費者無關的接口也暴露給對方。

方式二:

 優點:

   1:無需依賴過多jar包。

   2:消費者不要要過多接受消費者提供的方法。

 缺點:

   1:需要消費者自己實現接口。

   2:嚴重依賴文檔。在實現接口時,對于所有信息都要有文檔定義。如:請求方式,請求參數,返回值等。

   3:自己完成Dto,Vo的編寫。  

感謝你能夠認真閱讀完這篇文章,希望小編分享的“springboot如何單獨使用feign簡化接口調用”這篇文章對大家有幫助,同時也希望大家多多支持億速云,關注億速云行業資訊頻道,更多相關知識等著你來學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

巴彦淖尔市| 延吉市| 五华县| 盈江县| 图片| 邢台市| 正镶白旗| 伊金霍洛旗| 宣恩县| 嘉定区| 五原县| 沙坪坝区| 连平县| 阿巴嘎旗| 临桂县| 内丘县| 蕉岭县| 柏乡县| 烟台市| 兴安县| 环江| 阜新市| 长岛县| 利川市| 本溪市| 大洼县| 安溪县| 舒城县| 绍兴县| 土默特左旗| 济阳县| 枞阳县| 滕州市| 深泽县| 芮城县| 湟源县| 楚雄市| 喜德县| 鲁山县| 长子县| 都江堰市|