当前位置: 首页 > news >正文

建设网站各方面费用预算网站做视频的软件

建设网站各方面费用预算,网站做视频的软件,无锡网站制作哪家值得信赖,seo优化是利用规则提高排名一、starter实现统一配置微服务文档 把Swagger配置中的公共部分抽取出来Swagger与SpringBoot整合中#xff0c;可能会由于版本问题出现各种问题 1、制作starter 参考#xff1a; 【SpringBoot】自定义启动器 Starter【保姆级教程】用starter实现Oauth2中资源服务的统一配置用…一、starter实现统一配置微服务文档 把Swagger配置中的公共部分抽取出来Swagger与SpringBoot整合中可能会由于版本问题出现各种问题 1、制作starter 参考 【SpringBoot】自定义启动器 Starter【保姆级教程】用starter实现Oauth2中资源服务的统一配置用starter实现api接口的加密与日志功能用spring-boot-starter实现事务的统一配置 1 总体结构图 2 外部引用模块 tuwer-swagger-spring-boot-starter pom.xml ?xml version1.0 encodingUTF-8? project xmlnshttp://maven.apache.org/POM/4.0.0xmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsdmodelVersion4.0.0/modelVersiongroupIdcom.tuwer/groupIdartifactIdtuwer-swagger-spring-boot-starter/artifactIdversion1.0-SNAPSHOT/versiondescriptionswagger配置starter/descriptionpropertiesmaven.compiler.source8/maven.compiler.sourcemaven.compiler.target8/maven.compiler.target/propertiesdependencies!-- 自动配置模块 --dependencygroupIdcom.tuwer/groupIdartifactIdtuwer-swagger-spring-boot-starter-autoconfigure/artifactIdversion1.0-SNAPSHOT/version/dependency/dependencies /project3 自动配置模块 pom.xml ?xml version1.0 encodingUTF-8? project xmlnshttp://maven.apache.org/POM/4.0.0xmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsdparentgroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-parent/artifactIdversion2.6.7/version/parentmodelVersion4.0.0/modelVersiongroupIdcom.tuwer/groupIdartifactIdtuwer-swagger-spring-boot-starter-autoconfigure/artifactIdversion1.0-SNAPSHOT/versiondescriptionswagger自动配置模块/descriptionpropertiesmaven.compiler.source8/maven.compiler.sourcemaven.compiler.target8/maven.compiler.target/propertiesdependencies!-- 基础启动器 --dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter/artifactId/dependency!-- web --dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-web/artifactId/dependency!-- Swagger --dependencygroupIdio.springfox/groupIdartifactIdspringfox-boot-starter/artifactIdversion3.0.0/version/dependency!-- actuator完善监控信息 --dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-actuator/artifactId/dependency!-- lombok --dependencygroupIdorg.projectlombok/groupIdartifactIdlombok/artifactIdversion1.18.22/version/dependency/dependencies /project自动配置类 不要加 EnableWebMvc package com.tuwer.config;import org.springframework.boot.actuate.autoconfigure.endpoint.web.CorsEndpointProperties; import org.springframework.boot.actuate.autoconfigure.endpoint.web.WebEndpointProperties; import org.springframework.boot.actuate.autoconfigure.web.server.ManagementPortType; import org.springframework.boot.actuate.endpoint.ExposableEndpoint; import org.springframework.boot.actuate.endpoint.web.*; import org.springframework.boot.actuate.endpoint.web.annotation.ControllerEndpointsSupplier; import org.springframework.boot.actuate.endpoint.web.annotation.ServletEndpointsSupplier; import org.springframework.boot.actuate.endpoint.web.servlet.WebMvcEndpointHandlerMapping; import org.springframework.boot.context.properties.EnableConfigurationProperties; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.core.env.Environment; import org.springframework.util.StringUtils; import springfox.documentation.builders.RequestHandlerSelectors; import springfox.documentation.service.ApiInfo; import springfox.documentation.service.Contact; import springfox.documentation.spi.DocumentationType; import springfox.documentation.spring.web.plugins.Docket;import javax.annotation.Resource; import java.util.ArrayList; import java.util.Collection; import java.util.List;/*** author 土味儿* Date 2023/4/21* version 1.0* 这里不要加EnableWebMvc注解否则响应数据会出现乱码*/ Configuration //EnableWebMvc EnableConfigurationProperties(SwaggerProperty.class) public class SwaggerConfig {ResourceSwaggerProperty swaggerProperty;/*** 配置Swagger具体参数** return*/Beanpublic Docket docket(Environment environment) {// 允许启用Swagger的环境//Profiles profile Profiles.of(dev,test);// 判断当前环境与指定环境是否一致//boolean b environment.acceptsProfiles(profile);//return new Docket(DocumentationType.OAS_30)return new Docket(DocumentationType.SWAGGER_2)//.apiInfo(apiInfo(tuwer, 搜索服务, v3.0)).apiInfo(apiInfo(swaggerProperty.getAuthor(), swaggerProperty.getTitle(), swaggerProperty.getVersion()))// 根据当前环境判断是否启用Swagger//.enable(b)//.enable(true)//.groupName(A)// 通过.select()方法去配置扫描接口,RequestHandlerSelectors配置如何扫描接口.select()// 只扫描特定包下的接口.apis(RequestHandlerSelectors.basePackage(swaggerProperty.getBasePackage()))//.apis(RequestHandlerSelectors.any())//.apis(RequestHandlerSelectors.none())//.apis(RequestHandlerSelectors.withClassAnnotation(RestController.class))//.apis(RequestHandlerSelectors.withMethodAnnotation(GetMapping.class))//.paths(PathSelectors.).build();}/*** 自定义API文档信息** return*/private ApiInfo apiInfo(String author, String title, String version) {// 作者信息Contact contact new Contact(author, , );return new ApiInfo(title API 文档,,version,,contact,,,new ArrayList());}/*** 增加如下配置可解决Spring Boot 2.6.x 与 Swagger 3.0.0 不兼容问题* ------------------------------------------* 还需要在yml中作如下配置* mvc:* pathmatch:* matching-strategy: ant_path_matcher**/Beanpublic WebMvcEndpointHandlerMapping webEndpointServletHandlerMapping(WebEndpointsSupplier webEndpointsSupplier,ServletEndpointsSupplier servletEndpointsSupplier,ControllerEndpointsSupplier controllerEndpointsSupplier,EndpointMediaTypes endpointMediaTypes,CorsEndpointProperties corsProperties,WebEndpointProperties webEndpointProperties,Environment environment) {ListExposableEndpoint? allEndpoints new ArrayList();CollectionExposableWebEndpoint webEndpoints webEndpointsSupplier.getEndpoints();allEndpoints.addAll(webEndpoints);allEndpoints.addAll(servletEndpointsSupplier.getEndpoints());allEndpoints.addAll(controllerEndpointsSupplier.getEndpoints());String basePath webEndpointProperties.getBasePath();EndpointMapping endpointMapping new EndpointMapping(basePath);boolean shouldRegisterLinksMapping this.shouldRegisterLinksMapping(webEndpointProperties, environment, basePath);return new WebMvcEndpointHandlerMapping(endpointMapping, webEndpoints, endpointMediaTypes, corsProperties.toCorsConfiguration(), new EndpointLinksResolver(allEndpoints, basePath), shouldRegisterLinksMapping, null);}private boolean shouldRegisterLinksMapping(WebEndpointProperties webEndpointProperties, Environment environment, String basePath) {return webEndpointProperties.getDiscovery().isEnabled() (StringUtils.hasText(basePath) || ManagementPortType.get(environment).equals(ManagementPortType.DIFFERENT));}}配置属性类 package com.tuwer.config;import lombok.Data; import org.springframework.boot.context.properties.ConfigurationProperties;/*** p配置属性类/p** author 土味儿* version 1.0* Date 2023/4/22*/ Data ConfigurationProperties(prefix tuwer-swagger) public class SwaggerProperty {String author;String title;String version;String basePackage; }2、微服务使用starter 1 注入依赖 需要使用swagger的服务注入 !-- Swagger -- dependencygroupIdcom.tuwer/groupIdartifactIdtuwer-swagger-spring-boot-starter/artifactIdversion1.0-SNAPSHOT/version /dependency2 添加配置 spring:mvc:pathmatch:# swagger3.0需要ant_path_matcher# springboot2.6后默认为path_pattern_parsermatching-strategy: ant_path_matcher# swagger配置 tuwer-swagger:author: 作者title: 服务名称version: 版本base-package: 基础包 3 接口中添加API文档信息 API接口中添加 // 示例 RestController Api(tags 接口类描述) public class TestApi {PostMapping(/...)ApiOperation(接口方法描述)public String test(ApiParam(参数描述)RequestParam(id) Long id) {// ...} } 至此用starter实现微服务的swagger配置完成 二、网关聚合文档 使用 spring-cloud-gateway 网关把各个微服务的文档聚合起来通过网关统一访问。 参考聚合微服务中的 Swagger API 文档 1、注入依赖 在网关服务中加入Swagger依赖 更加细致的设计思路网上有介绍微服务中不需要Swagger的ui包只要能生成api的json数据包供网关抓取就可以。同时网关中也不用自已成生api的json数据包也可以去掉一些相关的依赖包。 !-- Swagger -- dependencygroupIdio.springfox/groupIdartifactIdspringfox-boot-starter/artifactIdversion3.0.0/version /dependency2、配置网关 不是所有的服务都通过网关转发。有些内部服务可以通过docker的内部网络直接访问可以单独配置这类内部服务的API文档。 spring:# 配置 Spring Cloud 相关属性cloud:# 配置 Spring Cloud Gateway 相关属性gateway:# 配置网关发现机制discovery:# 配置处理机制locator:enabled: false# 开启服务名称小写转换默认为falselower-case-service-id: true# 路由配置routes:# 正常服务1- id: server-1uri: 转发地址predicates:- Path/server_1/**- MethodGET,POSTfilters:- name: StripPrefixargs:# 过滤掉前1节parts: 1# 正常服务2- id: server-2uri: 转发地址predicates:- Path/server_2/**- MethodGET,POSTfilters:- name: StripPrefixargs:# 过滤掉前1节parts: 1# swagger文档1- id: swagger-docs-1uri: 转发地址predicates:- Path/swagger_1/**- MethodGET,POSTfilters:- name: StripPrefixargs:# 过滤掉前1节parts: 1# swagger文档2- id: swagger-docs-2uri: 转发地址predicates:- Path/swagger_2/**- MethodGET,POSTfilters:- name: StripPrefixargs:# 过滤掉前1节parts: 13、Swagger资源抓取类 从网关配置中过滤出Swagger的API文档配置信息 package com.tuwer.config;import lombok.AllArgsConstructor; import org.springframework.cloud.gateway.config.GatewayProperties; import org.springframework.cloud.gateway.route.RouteLocator; 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; import java.util.Locale; import java.util.Objects;/*** pSwagger资源类/p** author 土味儿* version 1.0* Date 2023/4/22*/ Component Primary AllArgsConstructor SuppressWarnings(all) public class SwaggerResourceConfig implements SwaggerResourcesProvider {private final RouteLocator routeLocator;private final GatewayProperties gatewayProperties;Overridepublic ListSwaggerResource get() {ListSwaggerResource resources new ArrayList();ListString routes new ArrayList();// 获取所有swagger文档路由的IDrouteLocator.getRoutes().subscribe(route - {String routeId route.getId().toLowerCase(Locale.ROOT);// swagger文档的路由ID中包含有swagger-docsif (routeId.contains(swagger-docs)) {routes.add(route.getId());}});//过滤出配置文件中定义的路由-过滤出Path Route Predicate-根据路径拼接成api-docs路径-生成SwaggerResourcegatewayProperties.getRoutes().stream().filter(routeDefinition - routes.contains(routeDefinition.getId())).forEach(route - {route.getPredicates().stream().filter(predicateDefinition - (Path).equalsIgnoreCase(predicateDefinition.getName())).forEach(predicateDefinition -resources.add(swaggerResource(route.getId(),predicateDefinition.getArgs().get(NameUtils.GENERATED_NAME_PREFIX 0)// 把路径中后面的 ** 替换成文档地址v2/api-docs.replace(**, v2/api-docs))));});return resources;}private SwaggerResource swaggerResource(String name, String location) {//log.info(name:{},location:{}, name, location);SwaggerResource swaggerResource new SwaggerResource();swaggerResource.setName(SwaggerModel.getByName(name).cnName);swaggerResource.setLocation(location);swaggerResource.setSwaggerVersion(2.0);return swaggerResource;}/*** 枚举类中英文映射*/enum SwaggerModel {DEFAULT(default, 默认),S_1(swagger-docs-1, 文档1),S_2(swagger-docs-2, 文档2);private String name;private String cnName;SwaggerModel(String name, String cnName) {this.name name;this.cnName cnName;}public static SwaggerModel getByName(String name) {for (SwaggerModel m : SwaggerModel.values()) {if (Objects.equals(m.name, name)) {//if(m.code code){return m;}}return DEFAULT;}} }
http://www.w-s-a.com/news/625876/

相关文章:

  • 企业网站关站大型综合新闻门户网站织梦模板
  • 网站优化排名易下拉效率查企业网站
  • 网站建设湛江关于汽车的网站
  • 南宁模板建站多少钱企业黄页名单
  • 企业网站的建设一般要素有网站定制公司地址
  • 婚纱摄影网站设计案例四川省城乡建设厅官方网站
  • 怎么做海淘网站wordpress首页表单
  • 大连网站优化技术长沙高端网站建设服务
  • 郎创网站建设做的网站 v2ex
  • 广东网站建设教程江西城乡住房建设网站
  • 做ppt卖给网站wordpress insert
  • 文化传媒公司网站模板wordpress转typecho
  • 网站建设设计视频郑州 服装网站建设
  • 网站建设什么公司好织梦cms默认密码
  • 大型网站 空间网上商城官网入口
  • 成都全美网站建设江苏专业网站建设
  • 足球网站模板有帮忙做阿里巴巴网站的吗
  • 建设厅报名网站京东网站的建设与发展前景
  • 金寨县住房和城乡建设部网站网页作业怎么做一个网站
  • 做ppt模板网站有哪些内容wap是什么意思卡老师
  • 网站建设一定要域名吗网站后台关键词设置
  • 标书制作公司网站坪山网站建设哪家便宜
  • 防止做网站的人修改数值门户网站架构
  • 电子项目外包网站考二建需要什么学历和专业
  • 做网站推广引流效果好吗电商推广技巧
  • 亦庄网站建设价格广州网站推广服务
  • 十大免费ppt网站下载重庆在线高校平台登录
  • 做环保网站案例百度seo教程
  • 体育用品网站模板网站建设话术
  • 潍坊网站建设服务商做网站多久能盈利