亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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

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

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

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

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

比如:

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

總結一下 有幾個方法

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

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

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

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

3、springMVC 可以實現(xiàn) WebMvcConfigurer 接口中的 configurePathMatch 方法來實現(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)一的后臺接口訪問路徑的前綴
 * @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));
    }
}

意思是 對有 @ApiRestController 注解的 controller 添加 /api前綴,對有@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è)務controller 層代碼添加 @ApiRestController 即可,如下:

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

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

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文件中添加如下

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

springboot項目添加全局前綴

spring的配置

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

spring boot的配置

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

properties文件

server.servlet.context-path: /springboot

yml文件

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

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

相關文章

  • 解決 java.lang.NoSuchMethodError的錯誤

    解決 java.lang.NoSuchMethodError的錯誤

    這篇文章主要介紹了解決 java.lang.NoSuchMethodError的錯誤的相關資料,需要的朋友可以參考下
    2017-06-06
  • 詳解JUC并發(fā)編程之鎖

    詳解JUC并發(fā)編程之鎖

    這篇文章主要為大家介紹了JUC并發(fā)編程之鎖,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2021-12-12
  • IntelliJ IDEA下SpringBoot如何指定某一個配置文件啟動項目

    IntelliJ IDEA下SpringBoot如何指定某一個配置文件啟動項目

    這篇文章主要介紹了IntelliJ IDEA下SpringBoot如何指定某一個配置文件啟動項目問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-09-09
  • Spring中Bean的生命周期實例講解

    Spring中Bean的生命周期實例講解

    這篇文章主要介紹了Spring中Bean的生命周期講解,而Spring中的一個Bean從開始到結束經(jīng)歷很多過程,但總體可以分為六個階段Bean定義、實例化、屬性賦值、初始化、生存期、銷毀,需要的朋友可以參考下
    2023-08-08
  • SpringCloud Gateway動態(tài)轉發(fā)后端服務實現(xiàn)過程講解

    SpringCloud Gateway動態(tài)轉發(fā)后端服務實現(xiàn)過程講解

    這篇文章主要介紹了SpringCloud Gateway動態(tài)轉發(fā)后端服務實現(xiàn)過程,簡單的路由轉發(fā)可以通過SpringCloudGateway的配置文件實現(xiàn),在一些業(yè)務場景種,會需要動態(tài)替換路由配置中的后端服務地址,單純靠配置文件無法滿足這種需求
    2023-03-03
  • Spring框架學習之AOP詳解

    Spring框架學習之AOP詳解

    這篇文章主要介紹了Spring框架學習之AOP詳解,文中有非常詳細的代碼示例,對正在學習Spring框架的小伙伴們有一定的幫助,需要的朋友可以參考下
    2021-05-05
  • 詳解Spring-bean的循環(huán)依賴以及解決方式

    詳解Spring-bean的循環(huán)依賴以及解決方式

    這篇文章主要介紹了詳解Spring-bean的循環(huán)依賴以及解決方式,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-09-09
  • Eclipse可視化插件WindowBuilder的安裝方法

    Eclipse可視化插件WindowBuilder的安裝方法

    這篇文章主要介紹了Eclipse可視化插件WindowBuilder的安裝方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-06-06
  • 關于JavaEE內(nèi)部類的部分注意事項

    關于JavaEE內(nèi)部類的部分注意事項

    這篇文章主要介紹了關于JavaEE內(nèi)部類的部分注意事項,將一個類定義在另一個類里面或者一個方法里面,這樣的類稱為內(nèi)部類,這是一種封裝思想,那么使用內(nèi)部類的時候要注意些什么呢,讓我們一起來看看吧
    2023-03-03
  • Spring Boot環(huán)境下Mybatis Plus的快速應用操作

    Spring Boot環(huán)境下Mybatis Plus的快速應用操作

    這篇文章主要介紹了Spring Boot環(huán)境下Mybatis Plus的快速應用操作,具有很好的價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-11-11

最新評論