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

SpringBoot2.x實(shí)現(xiàn)給Controller的RequestMapping添加統(tǒng)一前綴

 更新時(shí)間:2022年02月18日 08:38:42   作者:小時(shí)候的陽(yáng)光  
這篇文章主要介紹了SpringBoot2.x實(shí)現(xiàn)給Controller的RequestMapping添加統(tǒng)一前綴,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

給Controller的RequestMapping添加統(tǒng)一前綴

如何給Controller的RequestMapping添加統(tǒng)一前綴,比如"/api",為什么要添加統(tǒng)一訪問(wèn)前綴,其實(shí)是為了后面的接口的管理。

切記:約定與規(guī)范好過(guò)一切技術(shù)處理 !

比如:

  • 項(xiàng)目A必須所有訪問(wèn)接口URL必須增加 /api/projectA/
  • 項(xiàng)目B必須所有訪問(wèn)接口URL必須增加 /api/projectB/
  • 看到url里面含有/api 表示訪問(wèn)后端接口服務(wù),/projectA/ 一看就知道是項(xiàng)目A提供的服務(wù)接口。

總結(jié)一下 有幾個(gè)方法

1、在配置application.yml文件中添加:

? servlet:
? ? context-path: /api #(不同SpringBoot版本會(huì)有區(qū)別,這里是采用2.x)

但是這個(gè)其實(shí)是整個(gè)項(xiàng)目訪問(wèn)前綴,如果你有靜態(tài)資源也需要增加 /api 這個(gè)前綴訪問(wèn)。

2、通過(guò)nginx 和 你的網(wǎng)關(guān)層 添加統(tǒng)一的訪問(wèn)路徑前綴,這個(gè)不多說(shuō)了。

3、springMVC 可以實(shí)現(xiàn) WebMvcConfigurer 接口中的 configurePathMatch 方法來(lái)實(shí)現(xiàn)添加統(tǒng)一路徑前綴。

package com.middol.webbase.framework.config;
import com.middol.webbase.framework.annotation.ApiRestController;
import com.middol.webbase.framework.annotation.ReportRestController;
import com.middol.webbase.framework.properties.ApiPathProperties;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.PathMatchConfigurer;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
import javax.annotation.Resource;
/**
 * 配置統(tǒng)一的后臺(tái)接口訪問(wèn)路徑的前綴
 * @author C西
 */
@Configuration
public class MyWebMvcConfig implements WebMvcConfigurer {
    @Resource
    private ApiPathProperties apiPathProperties;
    @Override
    public void configurePathMatch(PathMatchConfigurer configurer) {
        configurer
                .addPathPrefix(apiPathProperties.getGlobalPrefix(),c -> c.isAnnotationPresent(ApiRestController.class))
                .addPathPrefix(apiPathProperties.getReportPrefix(),c -> c.isAnnotationPresent(ReportRestController.class));
    }
}

意思是 對(duì)有 @ApiRestController 注解的 controller 添加 /api前綴,對(duì)有@ReportRestController 注解的controller添加 /api/report 前綴。

@ApiRestController 和 @ReportRestController 是自定義注解繼承 @RestController注解。

package com.middol.webbase.framework.annotation;
import org.springframework.core.annotation.AliasFor;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.lang.annotation.*;
/**
 * controller層統(tǒng)一使用該注解
 * @author C西
 */
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@RestController
@RequestMapping
public @interface ApiRestController {
    /**
     * Alias for {@link RequestMapping#name}.
     */
    @AliasFor(annotation = RequestMapping.class)
    String name() default "";
    /**
     * Alias for {@link RequestMapping#value}.
     */
    @AliasFor(annotation = RequestMapping.class)
    String[] value() default {};
    /**
     * Alias for {@link RequestMapping#path}.
     */
    @AliasFor(annotation = RequestMapping.class)
    String[] path() default {};
}

然后 你的業(yè)務(wù)controller 層代碼添加 @ApiRestController 即可,如下:

@Api(value = "DemoUser增刪改查接口", tags = "【測(cè)試接口】")
@ApiRestController("demoUser")
public class DemoUserController extends BaseController{
}

其中 ApiPathProperties 是統(tǒng)一前綴名稱管理,可以在yml中修改,我這里設(shè)置了兩個(gè) 一般的CRUD接口 /api , 報(bào)表服務(wù)接口 統(tǒng)一為 /api/report,各自看各自服務(wù)定到底設(shè)置幾個(gè)。

package com.middol.webbase.framework.properties;
import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
/**
 * 接口路徑前綴配置
 * @author C西
 */
@Component
@ConfigurationProperties(prefix = "api.path")
@Data
public class ApiPathProperties {
    String globalPrefix = "api";
    String reportPrefix = "api/report";
}

application.yml文件中添加如下

## 專門針對(duì) Controller層接口路徑前綴全局配置
api:
? path:
? ? global-prefix: api
? ? report-prefix: api/report

springboot項(xiàng)目添加全局前綴

spring的配置

spring.application.name: article (spring boot下無(wú)效)

spring boot的配置

(springboot你自己設(shè)置的前綴名稱)

properties文件

server.servlet.context-path: /springboot

yml文件

server:
? servlet:
? ? context-path: /springboot

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

相關(guān)文章

  • 解析Mybatis SqlSessionFactory初始化原理

    解析Mybatis SqlSessionFactory初始化原理

    本文主要介紹了Mybatis SqlSessionFactory初始化原理,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-07-07
  • Java畢業(yè)設(shè)計(jì)實(shí)戰(zhàn)之醫(yī)院心理咨詢問(wèn)診系統(tǒng)的實(shí)現(xiàn)

    Java畢業(yè)設(shè)計(jì)實(shí)戰(zhàn)之醫(yī)院心理咨詢問(wèn)診系統(tǒng)的實(shí)現(xiàn)

    這是一個(gè)使用了java+Spring+Maven+mybatis+Vue+mysql開發(fā)的醫(yī)院心理咨詢問(wèn)診系統(tǒng),是一個(gè)畢業(yè)設(shè)計(jì)的實(shí)戰(zhàn)練習(xí),具有心理咨詢問(wèn)診該有的所有功能,感興趣的朋友快來(lái)看看吧
    2022-01-01
  • 聊聊spring boot的WebFluxTagsProvider的使用

    聊聊spring boot的WebFluxTagsProvider的使用

    這篇文章主要介紹了聊聊spring boot的WebFluxTagsProvider的使用,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-07-07
  • IDEA中Javaweb項(xiàng)目圖片加載不出來(lái)解決方案

    IDEA中Javaweb項(xiàng)目圖片加載不出來(lái)解決方案

    在IDEA中能夠正常的預(yù)覽到圖片,但是在生成項(xiàng)目的war包時(shí),項(xiàng)目的目錄結(jié)構(gòu)卻會(huì)發(fā)生變化,所以無(wú)法訪問(wèn)圖片,本文主要介紹了IDEA中Javaweb項(xiàng)目圖片加載不出來(lái)解決方案,感興趣的可以了解一下
    2023-10-10
  • springboot中如何使用minio存儲(chǔ)容器

    springboot中如何使用minio存儲(chǔ)容器

    大家好,本篇文章主要講的是springboot中如何使用minio存儲(chǔ)容器,感興趣的同學(xué)趕快來(lái)看一看吧,對(duì)你有幫助的話記得收藏一下
    2022-02-02
  • 解析spring加載bean流程的方法

    解析spring加載bean流程的方法

    這篇文章主要介紹了解析spring加載bean流程的方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-05-05
  • MyBatis-Plus自動(dòng)填充字段的詳細(xì)教程

    MyBatis-Plus自動(dòng)填充字段的詳細(xì)教程

    今天編寫一個(gè)詳細(xì)的教程來(lái)介紹如何在?Spring?Boot?項(xiàng)目中使用?MyBatis-Plus?實(shí)現(xiàn)自動(dòng)填充時(shí)間字段(如創(chuàng)建時(shí)間?createTime?和更新時(shí)間?updateTime),可以分為以下幾個(gè)部分,這個(gè)教程將涵蓋從項(xiàng)目配置到自動(dòng)填充的完整過(guò)程,需要的朋友可以參考下
    2024-08-08
  • 解讀@EventListener工作原理

    解讀@EventListener工作原理

    這篇文章主要介紹了@EventListener工作原理,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-08-08
  • IDEA使用學(xué)生郵箱無(wú)法注冊(cè)問(wèn)題:JetBrains Account connection error: 拒絕連接

    IDEA使用學(xué)生郵箱無(wú)法注冊(cè)問(wèn)題:JetBrains Account connection error: 拒絕連接

    這篇文章主要介紹了IDEA使用學(xué)生郵箱無(wú)法注冊(cè)問(wèn)題:JetBrains Account connection error: 拒絕連接,文中通過(guò)圖文及示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-07-07
  • SpringBoot中事務(wù)失效的六個(gè)原因解析

    SpringBoot中事務(wù)失效的六個(gè)原因解析

    這篇文章主要介紹了SpringBoot中事務(wù)失效的六個(gè)原因解析,由于Spring的事務(wù)是基于AOP的方式結(jié)合動(dòng)態(tài)代理來(lái)實(shí)現(xiàn)的,因此事務(wù)方法一定要是public的,這樣才能便于被Spring做事務(wù)的代理和增強(qiáng),需要的朋友可以參考下
    2023-10-10

最新評(píng)論

德惠市| 兰考县| 峡江县| 商洛市| 泉州市| 涡阳县| 肃北| 五原县| 扶余县| 藁城市| 习水县| 临颍县| 辉县市| 桐柏县| 抚宁县| 孝昌县| 荣成市| 蕲春县| 武清区| 怀集县| 大厂| 铜川市| 湛江市| 汽车| 曲靖市| 霞浦县| 新晃| 金阳县| 榆树市| 资兴市| 张家口市| 巴东县| 锡林浩特市| 东丰县| 怀宁县| 通海县| 思茅市| 成都市| 凤山县| 崇礼县| 五峰|