前言
本文介紹如何根據(jù)目錄結(jié)構(gòu)給requestmapping添加路由前綴(覆蓋requestmappinghandlermapping中的getmappingformethod方法,修改其中的url),如下圖的實際訪問路徑為:/v1/test/test。
具體實現(xiàn)
配置文件指定基礎(chǔ)包
application.properties
1
|
api- package = com.coisini.springbootlearn.controller |
自動補(bǔ)全路由前綴處理類
autoprefixurlmapping.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
|
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 自動補(bǔ)全路由前綴處理類 * requestmappinghandlermapping 負(fù)責(zé)處理標(biāo)注了@requestmapping的控制器 * @author coisini * @date aug 10, 2021 * @version 1.0 */ public class autoprefixurlmapping extends requestmappinghandlermapping { /** * 讀取基礎(chǔ)包配置 */ @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() 根據(jù)前綴生成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; } } |
自動補(bǔ)全路由前綴配置類
autoprefixconfiguration.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
/** * @description 自動補(bǔ)全路由前綴配置類 * 通過接口的形式主動發(fā)現(xiàn) * @author coisini * @date aug 10, 2021 * @version 1.0 */ @component public class autoprefixconfiguration implements webmvcregistrations { @override public requestmappinghandlermapping getrequestmappinghandlermapping() { return new autoprefixurlmapping(); } } |
測試類
1
2
3
4
5
6
7
8
9
10
|
@restcontroller @requestmapping ( "/test" ) public class testcontroller { @getmapping (value = "/test" ) public string test(){ return "hello" ; } } |
測試
目錄結(jié)構(gòu)如下
訪問結(jié)果
目錄結(jié)構(gòu)變更
訪問結(jié)果
到此這篇關(guān)于springboot - 根據(jù)目錄結(jié)構(gòu)自動生成路由前綴的文章就介紹到這了,更多相關(guān)springboot目錄結(jié)構(gòu)路由前綴內(nèi)容請搜索服務(wù)器之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持服務(wù)器之家!
原文鏈接:https://blog.csdn.net/weixin_41182727/article/details/119581199