成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Springboot如何動態注冊處理請求接口?這個知識點你值得了解一下

開發 前端
Spring Boot 是由 Pivotal 團隊提供的全新框架,其設計目的是用來簡化新 Spring 應用的初始搭建以及開發過程。該框架使用了特定的方式來進行配置,從而使開發人員不再需要定義樣板化的配置。

[[416750]]

環境:springboot2.2.10.RELEASE

編寫一個準備用來出來請求的方法

  1. @Service 
  2. public class UserHandler { 
  3.  
  4.   @ResponseBody 
  5.   public Object getUsers(@PathVariable("id") String id, HttpServletRequest request) { 
  6.     System.out.println(request) ; 
  7.     return "查詢用戶ID為: " + id ; 
  8.   } 
  9.      

你的處理程序可以不是受容器管理的Bean。這里還應用了SpringMVC相關的一些注解,這些注解都可以像Controller中使用一樣。

注冊接口處理程序

  1. @Configuration 
  2. public class MappingConfig { 
  3.      
  4.   @Autowired 
  5.   public void setHandlerMapping(RequestMappingHandlerMapping mapping, UserHandler handler) throws NoSuchMethodException { 
  6.     RequestMappingInfo info = RequestMappingInfo.paths("/users/{id}").methods(RequestMethod.GET).build(); 
  7.     Method method = UserHandler.class.getMethod("getUsers", String.class, HttpServletRequest.class); 
  8.     mapping.registerMapping(info, handler, method); 
  9.   } 
  1. 創建RequestMappingInfo對象,就是一些請求的基本元信息。
  2. 獲取處理程序的方法對象。
  3. 通過RequestMappingHandlerMapping注冊請求映射對象。

Spring容器在啟動過程中會將所有的Controller處理接口方法都包裝成RequestMappingInfo對象然后添加到

RequestMappingHandlerMapping對象的一個集合中。

注:容器默認有很多個HandlerMapping對象,具體該如何處理初始化那些類接口是通過

AbstractHandlerMethodMapping#isHandler決定,該方法是個抽象方法具體是由子類來實現的。

  1. public abstract class AbstractHandlerMethodMapping<T> extends AbstractHandlerMapping implements InitializingBean { 
  2.   protected abstract boolean isHandler(Class<?> beanType); 

RequestMappingHandlerMapping是AbstractHandlerMethodMapping的子類看看它的實現:

  1. public class RequestMappingHandlerMapping { 
  2.   @Override 
  3.   protected boolean isHandler(Class<?> beanType) { 
  4.     return (AnnotatedElementUtils.hasAnnotation(beanType, Controller.class) ||  
  5.             AnnotatedElementUtils.hasAnnotation(beanType, RequestMapping.class)); 
  6.   } 

這里判斷了當前Bean對象上是否有@Controller注解或者@RequestMapping對象;也就是在容器啟動后會將所有的Controller中的接口方法保證注冊為RequstMappingInfo對象。

在SpringMVC處理一個請求的過程中,有一個流程是取得相應的HandlerMapping對象。

處理方法參數

處理程序能夠接收那些參數?

JDK 8的java.util.Optional作為方法參數與注釋相結合受到支持具有必需屬性(例如@RequestParam、@RequestHeader和其他屬性)且等效于required=false。

Springboot如何動態注冊處理請求接口?這個知識點你值得了解一下

處理方法返回值

Springboot如何動態注冊處理請求接口?這個知識點你值得了解一下

 

責任編輯:姜華 來源: 今日頭條
相關推薦

2019-07-17 13:31:34

VLAN集中管理協議VCMP

2019-11-25 21:46:12

數據湖云計算數據倉庫

2023-03-02 11:52:00

自定義自動配置

2024-02-26 08:19:00

WebSpring容器

2021-11-29 08:26:17

Android.OS線程

2020-03-27 08:43:20

Vueprops開發

2019-02-20 14:16:43

2023-12-15 08:07:37

響應式布局官網

2018-08-08 09:30:29

服務器知識Linux系統

2023-05-09 08:25:26

Gaussdb數據庫開源數據庫

2021-07-06 14:56:20

深度學習編程人工智能

2014-08-19 14:12:47

Windows

2020-08-24 13:15:59

Python代碼描述符

2020-08-24 15:25:27

Python 開發運維

2022-01-12 14:24:37

接口Callable程序

2017-01-16 15:12:36

Linuxwatch命令命令

2020-10-20 14:12:54

B站開源彈幕

2020-12-24 10:20:43

文檔工具語言

2021-04-27 22:27:19

手機安卓蘋果

2018-10-09 14:34:58

開源KubernetesGit
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 精品国产乱码久久久久久丨区2区 | 911精品美国片911久久久 | 欧洲av一区| h片在线看| 亚洲大片在线观看 | 中国美女撒尿txxxxx视频 | 久久国产欧美日韩精品 | 好姑娘影视在线观看高清 | 一级片在线观看视频 | 免费在线观看av网址 | 亚洲免费福利视频 | 国产精品色 | 精品乱码一区二区三四区视频 | 在线看av的网址 | 99精品免费久久久久久日本 | 久久精品国产亚洲 | 国产免费播放视频 | 欧美久久精品 | 欧美精品a∨在线观看不卡 国产精品久久国产精品 | 国产视频中文字幕 | 粉嫩在线 | 最新av片| 国产91丝袜 | 九九热在线观看视频 | 国产国产精品久久久久 | 国产免费一区二区三区 | 国内精品在线视频 | 欧美一区2区三区3区公司 | 一区二区电影 | 久久久精| 欧美一级做性受免费大片免费 | 日韩欧美在线观看 | 天天干天天爱天天爽 | 精品久久久久久久久久久 | 一区二区三区免费 | 视频一区二区三区中文字幕 | 亚洲欧美精品国产一级在线 | 成人欧美一区二区三区黑人孕妇 | 麻豆视频在线免费看 | 在线看亚洲 | 成年人精品视频 |