如何更改@RequestMapping(value = "/board")中路徑board,采用新的路徑呼叫。就是啟動的時候,是boad路徑,但是啟動后,想換成url路徑這個怎么做呢?我自己寫了一個,還是有問題,值改了,但是沒有辦法加載更新。
@RestController
@RequestMapping("/test")
public class BoardController {
@RequestMapping(value = "/board", method = {RequestMethod.POST})
public ApiResult board(@RequestBody Map<String, Object> params) throws Exception {
return ApiResult.succ(null);
}
}
// 獲取成員方法的class物件
Method board = BoardController.class.getMethod("board", Map.class);
// 獲取 Test 上的注解
RequestMapping requestMapping = board.getAnnotation(RequestMapping.class);
// 獲取代理處理器
InvocationHandler handler = Proxy.getInvocationHandler(requestMapping);
// 過去私有 memberValues 屬性
Field f = handler.getClass().getDeclaredField("memberValues");
f.setAccessible(true);
// 獲取實體的屬性map
Map<String, Object> memberValues = (Map<String, Object>) f.get(handler);
// 修改屬性值
memberValues.put("value", "/url");
uj5u.com熱心網友回復:
我更想知道的是,你為什么要這么干uj5u.com熱心網友回復:
想寫一個通用型的擋板,性能壓測時候,呼叫這個服務。每次有新的需求的話,就改組態檔里面的url和回傳值引數就可以了。別的就不需要了。。uj5u.com熱心網友回復:
那我建議你使用httpcore或者netty,自己實作http擋板服務。而springmvc僅僅實作觸發擋板服務啟動或停止介面。
這樣,你自己的擋板服務引數可控。
uj5u.com熱心網友回復:
改不了。。。。uj5u.com熱心網友回復:
提示一下,可以使用 @PathVariable把URL中的路徑當做引數進行應答處理。
如果上述方案還滿足不了樓主的需求,那么,自定義一個攔截器,攔截所有請求,進行從處理。
uj5u.com熱心網友回復:
可不可以注冊到nacos中,然后把你想變動的值設定個變數,放到組態檔中,這樣每次只改nacos配置中心的檔案就可以了。轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/50884.html
標籤:Java EE
