返回顶部
首页 > 资讯 > 精选 >knife4j3.0.3怎么整合gateway和注册中心
  • 931
分享到

knife4j3.0.3怎么整合gateway和注册中心

2023-07-05 16:07:19 931人浏览 薄情痞子
摘要

这篇文章主要介绍“knife4j3.0.3怎么整合gateway和注册中心”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“knife4j3.0.3怎么整合gateway和注册中心”文章能帮助大家解决问

这篇文章主要介绍“knife4j3.0.3怎么整合gateway和注册中心”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“knife4j3.0.3怎么整合gateway和注册中心”文章能帮助大家解决问题。

    1. 项目依赖管理

    <properties>    <java.version>1.8</java.version>    <spring-boot.version>2.3.12.RELEASE</spring-boot.version>    <spring-cloud.version>Hoxton.SR12</spring-cloud.version>    <spring-cloud-alibaba.version>2.2.10-RC1</spring-cloud-alibaba.version>    <knife4j.version>3.0.3</knife4j.version></properties><dependencyManagement>    <dependencies>        <!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-dependencies -->        <dependency>            <groupId>org.springframework.boot</groupId>            <artifactId>spring-boot-dependencies</artifactId>            <version>${spring-boot.version}</version>            <type>pom</type>            <scope>import</scope>        </dependency>        <!-- Https://mvnrepository.com/artifact/org.springframework.cloud/spring-cloud-dependencies -->        <dependency>            <groupId>org.springframework.cloud</groupId>            <artifactId>spring-cloud-dependencies</artifactId>            <version>${spring-cloud.version}</version>            <type>pom</type>            <scope>import</scope>        </dependency>        <!-- https://mvnrepository.com/artifact/com.alibaba.cloud/spring-cloud-alibaba-dependencies -->        <dependency>            <groupId>com.alibaba.cloud</groupId>            <artifactId>spring-cloud-alibaba-dependencies</artifactId>            <version>${spring-cloud-alibaba.version}</version>            <type>pom</type>            <scope>import</scope>        </dependency>        <!-- https://mvnrepository.com/artifact/com.GitHub.xiaoymin/knife4j-dependencies -->        <dependency>            <groupId>com.github.xiaoymin</groupId>            <artifactId>knife4j-dependencies</artifactId>            <version>${knife4j.version}</version>            <type>pom</type>            <scope>import</scope>        </dependency>    </dependencies></dependencyManagement>

    2. gateway项目

    2.1 pom.xml

    <!--网关--><dependency>    <groupId>org.springframework.cloud</groupId>    <artifactId>spring-cloud-starter-gateway</artifactId></dependency><!--Nacos注册中心--><dependency>    <groupId>com.alibaba.cloud</groupId>    <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId></dependency><!--swagger美化——knife4j--><dependency>    <groupId>com.github.xiaoymin</groupId>    <artifactId>knife4j-spring-boot-starter</artifactId></dependency>

    2.2 application.yml

    server:  port: 8888spring:  main:    WEB-application-type: Reactive  application:    name: gateway

    2.3 bootstrap.yml

    spring:  cloud:    nacos:      server-addr: localhost:8848      username: nacos      passWord: nacos      discovery:        enabled: true        namespace: 776074db-06ad-4991-bb68-99b41ae971c9    gateway:      routes:        - id: news          uri: lb://news          predicates:            - Path=/news@RestController@RequiredArgsConstructorpublic class SwaggerController {    private final SwaggerResourcesProvider swaggerResources;    @GetMapping("/swagger-resources")    public Mono<ResponseEntity<List<SwaggerResource>>> swaggerResources() {        return Mono.just((new ResponseEntity<>(swaggerResources.get(), HttpStatus.OK)));    }}

    2.5 swagger资源配置类

    import com.msf.gateway.enums.ServiceEnum;import lombok.RequiredArgsConstructor;import org.springframework.cloud.gateway.config.GatewayProperties;import org.springframework.cloud.gateway.route.RouteDefinition;import org.springframework.cloud.gateway.support.NameUtils;import org.springframework.context.annotation.Primary;import org.springframework.stereotype.Component;import springfox.documentation.swagger.web.SwaggerResource;import springfox.documentation.swagger.web.SwaggerResourcesProvider;import java.util.ArrayList;import java.util.List;@Primary@Component@RequiredArgsConstructorpublic class SwaggerResourceConfig implements SwaggerResourcesProvider {    private final String api_URI = "v2/api-docs";    private final GatewayProperties gatewayProperties;    @Override    public List<SwaggerResource> get() {        // 接口资源列表        List<SwaggerResource> resources = new ArrayList<>();        // resources为所有路由都加载到文档,如果需要部分显示,在下方使用filter进行过滤即可        for (RouteDefinition route : gatewayProperties.getRoutes()) {            route.getPredicates().stream()                    .filter(predicateDefinition -> ("Path").equalsIgnoreCase(predicateDefinition.getName()))                    .forEach(predicateDefinition -> resources.add(swaggerResource(ServiceEnum.getServiceName(route.getId()),                            predicateDefinition.getArgs().get(NameUtils.GENERATED_NAME_PREFIX + "0").replace("**", API_URI))));        }        return resources;    }    private SwaggerResource swaggerResource(String name, String url) {        SwaggerResource swaggerResource = new SwaggerResource();        swaggerResource.setName(name);        swaggerResource.setLocation(url);        swaggerResource.setUrl(url);        swaggerResource.setSwaggerVersion("2.0");        return swaggerResource;    }}

    2.6 服务枚举类

    import lombok.AllArgsConstructor;@AllArgsConstructorpublic enum ServiceEnum {    //新闻模块    news("新闻模块");    private final String serviceName;    public static String getServiceName(String name) {        for (ServiceEnum service : ServiceEnum.values()) {            if (name.equals(service.name())) {                return service.serviceName;            }        }        return "服务路由字典错误!";    }}

    此后如果新增了其他子服务,在服务枚举类中添加对应的模块即可:枚举name=spring.cloud.gateway.routes.id,serviceName=服务名称

    3. 子服务

    3.1 pom.xml

    <dependency>    <groupId>org.springframework.boot</groupId>    <artifactId>spring-boot-starter-web</artifactId></dependency><!--nacos服务注册发现--><dependency>    <groupId>com.alibaba.cloud</groupId>    <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId></dependency><!--swagger美化——knife4j--><dependency>    <groupId>com.github.xiaoymin</groupId>    <artifactId>knife4j-micro-spring-boot-starter</artifactId>    <exclusions>        <exclusion>            <groupId>javax.validation</groupId>            <artifactId>validation-api</artifactId>        </exclusion>    </exclusions></dependency>

    3.2 application.yml

    server:  port: 8080spring:  application:    name: news

    3.3 bootstrap.yml

    spring:  cloud:    nacos:      server-addr: localhost:8848      username: nacos      password: nacos      discovery:        enabled: true        namespace: 776074db-06ad-4991-bb68-99b41ae971c9knife4j:  enable: true

    3.4 swagger配置类

    import com.msf.common.constant.Constant;import io.swagger.annotations.Api;import io.swagger.annotations.ApiOperation;import lombok.extern.slf4j.Slf4j;import org.springframework.beans.factory.annotation.Value;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import org.springframework.http.HttpMethod;import springfox.documentation.builders.*;import springfox.documentation.service.*;import springfox.documentation.spi.DocumentationType;import springfox.documentation.spring.web.plugins.Docket;import springfox.documentation.swagger2.annotations.EnableSwagger2;import java.util.ArrayList;import java.util.List;@Slf4j@Configuration@EnableSwagger2public class SwaggerConfig {    @Value("${spring.profiles.active:}")    private String active;    @Bean    public Docket docDocket() {        boolean enableSwagger = !Constant.SPRING_PROFILES_ACTIVE_PRO.equalsIgnoreCase(active);        return new Docket(DocumentationType.SWAGGER_2)                // 非生产环境启用                .enable(enableSwagger)                .apiInfo(apiInfo())                .globalResponses(HttpMethod.GET, globalResponse())                .globalResponses(HttpMethod.POST, globalResponse())                .globalResponses(HttpMethod.PUT, globalResponse())                .globalResponses(HttpMethod.DELETE, globalResponse())                .select()                .apis(RequestHandlerSelectors.withClassAnnotation(Api.class))                .apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class))                .paths(PathSelectors.any())                .build()                .globalRequestParameters(globalRequestParameters());    }    private ApiInfo apiInfo() {        String title = "新闻模块";        String description = "<div style='font-size:14px;color:red;'>新闻模块knife4j接口文档</div>";        String version = "1.0.0";        String termsOfServiceUrl = "";        Contact contact = new Contact("√Angelの爱灬", "", "");        return new ApiInfoBuilder()                .title(title)                .description(description)                .version(version)                .termsOfServiceUrl(termsOfServiceUrl)                .contact(contact)                .build();    }    private List<Response> globalResponse(){        List<Response> responseList = new ArrayList<>();        responseList.add(new ResponseBuilder().code("401").description("未认证").build());        responseList.add(new ResponseBuilder().code("403").description("请求被禁止").build());        responseList.add(new ResponseBuilder().code("404").description("找不到资源").build());        return responseList;    }    private List<RequestParameter> globalRequestParameters() {        List<RequestParameter> parameters = new ArrayList<>();        RequestParameterBuilder requestParameterBuilder = new RequestParameterBuilder();        RequestParameter username = requestParameterBuilder                .name("username").description("用户账号").in(ParameterType.HEADER)                .build();        RequestParameter token = requestParameterBuilder                .name("token").description("token").in(ParameterType.HEADER)                .build();        parameters.add(username);        parameters.add(token);        return parameters;    }}

    关于“knife4j3.0.3怎么整合gateway和注册中心”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注编程网精选频道,小编每天都会为大家更新不同的知识点。

    --结束END--

    本文标题: knife4j3.0.3怎么整合gateway和注册中心

    本文链接: https://www.lsjlt.com/news/353670.html(转载时请注明来源链接)

    有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

    猜你喜欢
    • knife4j3.0.3怎么整合gateway和注册中心
      这篇文章主要介绍“knife4j3.0.3怎么整合gateway和注册中心”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“knife4j3.0.3怎么整合gateway和注册中心”文章能帮助大家解决问...
      99+
      2023-07-05
    • springcloud整合nacos实现注册发现中心
      文章目录 微服务为什么需要服务注册发现中心怎么使用注册发现中心1.本示例环境2.nacos 安装3.pom.xml4.application.yml5.NacosDiscoveryDemoCo...
      99+
      2023-09-07
      spring cloud java spring boot
    • springboot整合Dubbo与Feign的实现 (无注册中心)
      目录一,SpringBoot 整合 Dubbo1.1 服务提供者1.1.1 核心依赖1.1.2 核心配置1.1.3 服务提供者代码结构1.1.4 服务提供者暴露的API(DubboD...
      99+
      2024-04-02
    • Nacos 注册中心和配置中心
      一,nacos介绍         1, 什么是nacos? Nacos(na代表Naming,co代表Configuration,s为Service)是阿里巴巴一个开源的注册中心、配置中心组件         2、nacos的启动器 ​​...
      99+
      2023-08-31
      java 分布式 开发语言
    • springcloud整合gateway怎么实现网关
      这篇文章主要介绍了springcloud整合gateway怎么实现网关的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇springcloud整合gateway怎么实现网关文章都会有所收获,下面我们一起来看看吧。1...
      99+
      2023-06-26
    • SpringCloud注册中心集群怎么创建
      本篇内容介绍了“SpringCloud注册中心集群怎么创建”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!集群环境搭建我们新建两个注册中心工程...
      99+
      2023-06-05
    • 详解Nacos中注册中心和配置中心的实现
      目录1.Nacos 简介Nacos 特性介绍2.注册中心实现2.1 创建服务提供者2.2 创建服务消费者3.配置中心实现3.1 新建项目并添加依赖3.2 配置 Nacos Confi...
      99+
      2024-04-02
    • 微服务之注册中心和配置中心Consul详解
      目录概述注册中心注册中心选型CAP原理Consul介绍Consul Raft算法Consul 基本使用注册服务概述 上篇说到构建良好的架构,依托于基础设施建设(自动化测试、自动化部署...
      99+
      2023-05-17
      微服务注册配置Consul 微服务注册配置
    • SpringBoot怎么集成Nacos实现注册中心与配置中心
      这篇文章主要介绍“SpringBoot怎么集成Nacos实现注册中心与配置中心”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“SpringBoot怎么集成Nacos实现注册中心与配置中心”文章能帮助大...
      99+
      2023-07-05
    • 自动注册Gateway网关路由怎么配置
      本文小编为大家详细介绍“自动注册Gateway网关路由怎么配置”,内容详细,步骤清晰,细节处理妥当,希望这篇“自动注册Gateway网关路由怎么配置”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。动态路由配置在启动...
      99+
      2023-07-05
    • Spring Cloud Alibaba使用Nacos作为注册中心和配置中心
      目录前言Nacos简介使用Nacos作为注册中心安装并运行Nacos创建应用注册到Nacos负载均衡功能使用Nacos作为配置中心创建nacos-config-client模块在Na...
      99+
      2024-04-02
    • Java Spring Cloud怎么创建服务注册中心
      本篇内容介绍了“Java Spring Cloud怎么创建服务注册中心”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!服务注册中心:我们要用到...
      99+
      2023-06-05
    • 怎样进行搭建Eureka注册中心
      这篇文章给大家介绍怎样进行搭建Eureka注册中心,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。一 创建一个Spring Boot工程,命名为eureka-server,并在pom.xml中引入必要的依赖。<pa...
      99+
      2023-06-05
    • 怎么整合Gateway网关解决跨域问题
      本篇内容介绍了“怎么整合Gateway网关解决跨域问题”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一、Gateway网关简介API 网关是...
      99+
      2023-06-30
    • Java中Zookeeper注册中心原理是什么
      本篇内容主要讲解“Java中Zookeeper注册中心原理是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Java中Zookeeper注册中心原理是什么”吧!RPC框架中有3个重要的角色:注...
      99+
      2023-06-20
    • SpringCloud Alibaba 2021新版 整合 seata 1.5.X 对接 Nacos 注册配置中心 Mysql 存储 避坑指南
      服务端搭建 docker-compose编排服务 注意: 1.5.1不支持mysql8 从1.5.2开始支持mysql8 version: '3' seata-server: image: s...
      99+
      2023-09-10
      mysql seata 1.5 nacos cloud alibaba 分布式事务
    • C#中怎么实现事件注册和注销
      本篇文章给大家分享的是有关C#中怎么实现事件注册和注销,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。C#事件注册和注销:设计思路主窗体(frmMain :IParentForm...
      99+
      2023-06-17
    • 怎么用Spring Cloud搭建高可用服务注册中心
      这篇文章主要讲解了“怎么用Spring Cloud搭建高可用服务注册中心”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么用Spring Cloud搭建高可用服务注册中心”吧!增加配置文件在...
      99+
      2023-06-19
    • 怎样使用Spring Cloud搭建服务注册中心
      怎样使用Spring Cloud搭建服务注册中心,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。与dubbo不同的是,Spring Cloud是一个一站式分布式框架,Spring...
      99+
      2023-06-19
    • 为什么要用Pulp托管容器注册中心
      本篇内容主要讲解“为什么要用Pulp托管容器注册中心”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“为什么要用Pulp托管容器注册中心”吧!有很多令人信服的理由来...
      99+
      2024-04-02
    软考高级职称资格查询
    编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
    • 官方手机版

    • 微信公众号

    • 商务合作