您好,登錄后才能下訂單哦!
本篇內容主要講解“SpringBoot怎么根據目錄結構自動生成路由前綴”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“SpringBoot怎么根據目錄結構自動生成路由前綴”吧!
前言
具體實現
配置文件指定基礎包
自動補全路由前綴處理類
自動補全路由前綴配置類
測試類
測試
本文介紹如何根據目錄結構給RequestMapping添加路由前綴(覆蓋RequestMappingHandlerMapping中的getMappingForMethod方法,修改其中的Url),如下圖的實際訪問路徑為:/v1/test/test。
application.properties
api-package = com.coisini.springbootlearn.controller
AutoPrefixUrlMapping.java
import org.springframework.beans.factory.annotation.Value; import org.springframework.web.servlet.mvc.method.RequestMappingInfo; import org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping; import java.lang.reflect.Method; import java.util.Objects; /** * @Description 自動補全路由前綴處理類 * RequestMappingHandlerMapping 負責處理標注了@RequestMapping的控制器 * @author coisini * @date Aug 10, 2021 * @Version 1.0 */ public class AutoPrefixUrlMapping extends RequestMappingHandlerMapping { /** * 讀取基礎包配置 */ @Value("${api-package}") private String bathApiPackagePath; /** * 重寫方法路由獲取 * @param method * @param handlerType * @return */ @Override protected RequestMappingInfo getMappingForMethod(Method method, Class<?> handlerType) { RequestMappingInfo mappingInfo = super.getMappingForMethod(method, handlerType); if (Objects.nonNull(mappingInfo)) { String prefix = this.getPrefix(handlerType); /** * RequestMappingInfo.paths(prefix).build() 根據前綴生成mappingInfo * combine(mappingInfo) 拼接原來的mappingInfo */ return RequestMappingInfo.paths(prefix).build().combine(mappingInfo); } return mappingInfo; } /** * 獲取方法路由前綴 * @param handleType * @return */ private String getPrefix(Class<?> handleType) { String packageName = handleType.getPackage().getName(); String dotPath = packageName.replace(this.bathApiPackagePath, "").replace(".","/"); return dotPath; } }
AutoPrefixConfiguration.java
/** * @Description 自動補全路由前綴配置類 * 通過接口的形式主動發現 * @author coisini * @date Aug 10, 2021 * @Version 1.0 */ @Component public class AutoPrefixConfiguration implements WebMvcRegistrations { @Override public RequestMappingHandlerMapping getRequestMappingHandlerMapping() { return new AutoPrefixUrlMapping(); } }
@RestController @RequestMapping("/test") public class TestController { @GetMapping(value = "/test") public String test(){ return "hello"; } }
目錄結構如下
訪問結果
目錄結構變更
訪問結果
到此,相信大家對“SpringBoot怎么根據目錄結構自動生成路由前綴”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。