最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

springboot+knife4j+nacos實踐

 更新時間:2025年06月05日 08:45:40   作者:北漂靚仔  
這篇文章主要介紹了springboot+knife4j+nacos實踐,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教

nacos注冊中心聚合OpenAPI文檔

整個工程的目錄

訪問地址:https://github.com/WQL-Java97/doc

工程目錄說明如下

工程說明
service-user一個非常簡單的用戶服務(wù),包含用戶接口
service-order一個非常簡單的訂單服務(wù),包含訂單接口
service-doc聚合文檔工程,也是一個Spring Boot工程,不過需要注意的是基于web的,而非webflux

nacos注冊中心以及service-user、order等都非常簡單,按照注冊中心、用戶服務(wù)、訂單服務(wù)依次進行啟動即可

此時,我們訪問nacos的主頁,最終能看到我們的注冊中心存在兩個服務(wù),如下圖:

目的: 從nacos注冊中心直接進行聚合,也就是將用戶服務(wù)、訂單服務(wù)的OpenAPI文檔聚合在一起進行展示

主要步驟如下

1、第一步

service-doc工程引入knife4j-aggregation-spring-boot-starter依賴

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.3.2.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.nucarf</groupId>
    <artifactId>service-doc</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>service-doc</name>
    <description>Demo project for Spring Boot</description>

    <properties>
        <java.version>1.8</java.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>com.github.xiaoymin</groupId>
            <artifactId>knife4j-aggregation-spring-boot-starter</artifactId>
            <version>2.0.8</version>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

</project>

2、第二步

配置properties配置文件,如下:

server.port=8073
knife4j.enableAggregation=true
knife4j.nacos.enable=true
knife4j.nacos.serviceUrl=http://localhost:8848/nacos/
knife4j.nacos.routes[0].name=訂單服務(wù)
knife4j.nacos.routes[0].service-name=service-order
knife4j.nacos.routes[0].location=/v2/api-docs?group=default
knife4j.nacos.routes[0].service-path=/

knife4j.nacos.routes[1].name=用戶模塊
knife4j.nacos.routes[1].service-name=service-user
knife4j.nacos.routes[1].location=/v2/api-docs?group=default
knife4j.nacos.routes[1].service-path=/

3、第三步

啟動項目,訪問doc.html進行查看,效果圖如下 :

注:本項目禁用了調(diào)試功能,具體配置在功能模塊中。

具體實現(xiàn)功能模塊展示:

pom.xml:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.3.2.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.nucarf</groupId>
    <artifactId>service-user</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>service-user</name>
    <description>Demo project for Spring Boot</description>

    <properties>
        <java.version>1.8</java.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <!-- https://mvnrepository.com/artifact/com.alibaba.cloud/spring-cloud-starter-alibaba-nacos-discovery -->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
            <version>2.2.1.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>com.github.xiaoymin</groupId>
            <artifactId>knife4j-micro-spring-boot-starter</artifactId>
            <version>2.0.8</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

</project>
  • application.properties文件:
server.port=8072
spring.application.name=service-user
spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848

#開啟knife4j增強
knife4j.enable=true
#禁用調(diào)試功能
knife4j.setting.enableDebug=false
  • 配置類:
package com.nucarf.config;

import com.github.xiaoymin.knife4j.spring.extension.OpenApiExtensionResolver;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.annotation.Order;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.service.*;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2WebMvc;


@Configuration
@EnableSwagger2WebMvc
public class SwaggerConfiguration {
    
    private final OpenApiExtensionResolver openApiExtensionResolver;

    @Autowired
    public SwaggerConfiguration(OpenApiExtensionResolver openApiExtensionResolver) {
        this.openApiExtensionResolver = openApiExtensionResolver;
    }
    
    @Bean(value = "userApi")
    @Order(value = 1)
    public Docket groupRestApi() {
        return new Docket(DocumentationType.SWAGGER_2)
                .apiInfo(groupApiInfo())
                .select()
                .apis(RequestHandlerSelectors.basePackage("com.nucarf.controller"))
                .paths(PathSelectors.any())
                .build()
                .extensions(openApiExtensionResolver.buildSettingExtensions());//禁用調(diào)試功能
    }

    private ApiInfo groupApiInfo(){
        return new ApiInfoBuilder()
                .title("swagger-bootstrap-ui很棒~~~?。?!")
                .description("<div style='font-size:14px;color:red;'>swagger-bootstrap-ui-demo RESTful APIs</div>")
                .termsOfServiceUrl("http://www.group.com/")
                .contact(new Contact("user","localhost","nucarf@qq.com"))
                .version("1.0")
                .build();
    }

}
  • 實體:
package com.nucarf.entity;

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;

@ApiModel(value = "用戶")
public class User {

    @ApiModelProperty(value = "姓名")
    private String name;

    @ApiModelProperty(value = "年齡")
    private Integer age;

    @ApiModelProperty(value = "工作")
    private String worker;

    @ApiModelProperty(value = "單位")
    private String company;


    public User() {
    }

    public User(String name, Integer age, String worker, String company) {
        this.name = name;
        this.age = age;
        this.worker = worker;
        this.company = company;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }

    public String getWorker() {
        return worker;
    }

    public void setWorker(String worker) {
        this.worker = worker;
    }

    public String getCompany() {
        return company;
    }

    public void setCompany(String company) {
        this.company = company;
    }
}
  • 控制層:
package com.nucarf.controller;


import com.nucarf.entity.User;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

import java.util.Arrays;
import java.util.List;

@Api(tags = "用戶模塊")
@RestController
public class UserController {

    @ApiOperation(value = "用戶列表")
    @PostMapping("userList")
    public List<User> userList(){
        User user1 = new User("張三",20,"初級java開發(fā)工程師","阿里巴巴");
        User user2 = new User("李四",21,"中級java開發(fā)工程師","百度");
        User user3 = new User("王五",22,"高級java開發(fā)工程師","騰訊");
        User user4 = new User("趙六",23,"資深java開發(fā)工程師","字節(jié)跳動");

        return Arrays.asList(user1,user2,user3,user4);
    }

    @ApiOperation(value = "根據(jù)id查詢用戶")
    @GetMapping("user")
    public User getUser(@RequestParam ("id") @ApiParam(value = "id值",name = "用戶id",required = true) Integer id){

        User user = new User("趙六",23,"資深java開發(fā)工程師","字節(jié)跳動");
        return user;
    }

}
  • 啟動類:
package com.nucarf;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;

@SpringBootApplication
@EnableDiscoveryClient
public class ServiceUserApplication {
    public static void main(String[] args) {
        SpringApplication.run(ServiceUserApplication.class, args);
    }
}
  • 效果展示:

總結(jié)

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Java正則表達式驗證固定電話號碼符合性

    Java正則表達式驗證固定電話號碼符合性

    這篇文章主要介紹了Java正則表達式驗證固定電話號碼符合性的實例代碼,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下
    2018-09-09
  • Knife4j的請求示例當中有很多空白行的問題解決辦法

    Knife4j的請求示例當中有很多空白行的問題解決辦法

    這篇文章主要介紹了Knife4j的請求示例當中有很多空白行的問題解決辦法,按正常來說不應(yīng)該有上方的空白,當然如果只是查看我也不至于非要解決他,主要是假如接口是json傳參,調(diào)試界面都沒辦法修改參數(shù),遇到同樣問題的同學可以參考閱讀本文
    2024-09-09
  • spring+hibernate 兩種整合方式配置文件的方法

    spring+hibernate 兩種整合方式配置文件的方法

    本篇文章主要介紹了spring+hibernate 兩種整合方式配置文件的方法,主要有兩種方式 1、注解方式 2、xml方式實現(xiàn),有興趣的可以了解一下。
    2017-04-04
  • Android studio按鈕點擊頁面跳轉(zhuǎn)詳細步驟

    Android studio按鈕點擊頁面跳轉(zhuǎn)詳細步驟

    在Android應(yīng)用程序中,頁面跳轉(zhuǎn)是非常常見的操作,下面這篇文章主要給大家介紹了關(guān)于Android studio按鈕點擊頁面跳轉(zhuǎn)的相關(guān)資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2023-06-06
  • Java實戰(zhàn)之電影在線觀看系統(tǒng)的實現(xiàn)

    Java實戰(zhàn)之電影在線觀看系統(tǒng)的實現(xiàn)

    這篇文章主要介紹了如何利用Java實現(xiàn)電影在線觀看系統(tǒng),文中用到的技術(shù)有:JSP、Spring、SpringMVC、MyBatis等,感興趣的可以了解一下
    2022-04-04
  • SpringBoot項目中@Test不出現(xiàn)可點擊運行的按鈕問題

    SpringBoot項目中@Test不出現(xiàn)可點擊運行的按鈕問題

    這篇文章主要介紹了SpringBoot項目中@Test不出現(xiàn)可點擊運行的按鈕問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-01-01
  • Java安全之Filter權(quán)限繞過的實現(xiàn)

    Java安全之Filter權(quán)限繞過的實現(xiàn)

    在一些需要挖掘一些無條件RCE中,大部分類似于一些系統(tǒng)大部分地方都做了權(quán)限控制的,而這時候想要利用權(quán)限繞過就顯得格外重要,本文就介紹了如何實現(xiàn),一起來了解一下
    2021-05-05
  • SpringBoot2零基礎(chǔ)到精通之profile功能與自定義starter

    SpringBoot2零基礎(chǔ)到精通之profile功能與自定義starter

    SpringBoot是一種整合Spring技術(shù)棧的方式(或者說是框架),同時也是簡化Spring的一種快速開發(fā)的腳手架,本篇讓我們一起學習profile功能與自定義starter
    2022-03-03
  • Java序列化中子類、父類構(gòu)造函數(shù)問題實例分析

    Java序列化中子類、父類構(gòu)造函數(shù)問題實例分析

    這篇文章主要介紹了Java序列化中子類、父類構(gòu)造函數(shù)問題,結(jié)合實例形式分析了java父類與子類構(gòu)造函數(shù)中序列化接口調(diào)用相關(guān)操作技巧與使用注意事項,需要的朋友可以參考下
    2019-09-09
  • SpringBoot整合MongoDB的完整操作指南

    SpringBoot整合MongoDB的完整操作指南

    在實際項目開發(fā)中,合理封裝MongoDB的操作工具類,可以大幅提升代碼復(fù)用性和維護性,本文將帶你從零開始實現(xiàn)一個功能完善的MongoDB工具類,涵蓋基礎(chǔ)CRUD和高級查詢功能,需要的朋友可以參考下
    2026-02-02

最新評論

富民县| 鱼台县| 山阳县| 十堰市| 福贡县| 玉山县| 吉木萨尔县| 泉州市| 陆良县| 喀喇| 犍为县| 新沂市| 郑州市| 湘西| 镇安县| 琼中| 若尔盖县| 洛南县| 淮北市| 东乌珠穆沁旗| 万山特区| 巴彦淖尔市| 昭苏县| 宾阳县| 南皮县| 新巴尔虎右旗| 息烽县| 泰兴市| 兴安县| 阜南县| 扎鲁特旗| 时尚| 子洲县| 徐水县| 抚顺县| 林州市| 牙克石市| 溧阳市| 江都市| 仙游县| 武夷山市|