AVt天堂网 手机版,亚洲va久久久噜噜噜久久4399,天天综合亚洲色在线精品,亚洲一级Av无码毛片久久精品

當(dāng)前位置:首頁 > 科技  > 軟件

基于注解的Controller接口這些高級(jí)功能,你都知道嗎?

來源: 責(zé)編: 時(shí)間:2024-04-28 17:22:34 200觀看
導(dǎo)讀環(huán)境:SpringBoot2.7.181. 簡介基于注解的Controller接口,你可以使用 @RequestMapping 注解將請(qǐng)求映射到控制器方法。它有多種屬性,可根據(jù) URL、HTTP 方法、請(qǐng)求參數(shù)、頭和媒體類型進(jìn)行匹配。該注解可以在類上使用它來表

環(huán)境:SpringBoot2.7.18jLF28資訊網(wǎng)——每日最新資訊28at.com

1. 簡介

基于注解的Controller接口,你可以使用 @RequestMapping 注解將請(qǐng)求映射到控制器方法。它有多種屬性,可根據(jù) URL、HTTP 方法、請(qǐng)求參數(shù)、頭和媒體類型進(jìn)行匹配。該注解可以在類上使用它來表達(dá)共享映射,也可以在方法級(jí)使用它來縮小特定接口映射的范圍。jLF28資訊網(wǎng)——每日最新資訊28at.com

@RequestMapping 還有 HTTP 方法特定的快捷方式變體:jLF28資訊網(wǎng)——每日最新資訊28at.com

  • @GetMapping
  • @PostMapping
  • @PutMapping
  • @DeleteMapping
  • @PatchMapping

通過上面的注解,我們能更加具體的去匹配我們的Controller接口方法。這些注解在開發(fā)中都是些基本的操作,并且在絕大多數(shù)情況下使用這些接口完全夠用了。接下來將介紹幾個(gè)高級(jí)用法。jLF28資訊網(wǎng)——每日最新資訊28at.com

2. 實(shí)戰(zhàn)案例

2.1 HEAD、OPTIONS請(qǐng)求

對(duì)于head,options請(qǐng)求Spring并沒有提供對(duì)應(yīng)的快捷注解,我們只能通過@RequestMapping注解來指定method屬性。jLF28資訊網(wǎng)——每日最新資訊28at.com

@GetMapping (和 @RequestMapping(method=HttpMethod.GET))支持 HTTP HEAD 透明請(qǐng)求映射。控制器方法無需更改。在 javax.servlet.http.HttpServlet 中應(yīng)用的響應(yīng)封裝器可確保 Content-Length 標(biāo)頭被設(shè)置為寫入的字節(jié)數(shù)(而不會(huì)實(shí)際寫入響應(yīng))。如下示例:jLF28資訊網(wǎng)——每日最新資訊28at.com

@GetMapping("/h")public Object h() {  System.out.println("header....") ;  return "h method..." ;}

當(dāng)上面的接口以head方式請(qǐng)求時(shí),也是可以成功進(jìn)入該方法的只是并不會(huì)輸出內(nèi)容到客戶端,而僅僅是通過Content-Leng告知有多少個(gè)字節(jié)內(nèi)容。jLF28資訊網(wǎng)——每日最新資訊28at.com

圖片圖片jLF28資訊網(wǎng)——每日最新資訊28at.com

響應(yīng)header中有Content-LengthjLF28資訊網(wǎng)——每日最新資訊28at.com

圖片圖片jLF28資訊網(wǎng)——每日最新資訊28at.com

對(duì)應(yīng)HEAD請(qǐng)求我們完全可以通過GET方式來解決。jLF28資訊網(wǎng)——每日最新資訊28at.com

默認(rèn)情況下,HTTP OPTIONS 的處理方式是將 Allow 響應(yīng)頭設(shè)置為具有匹配 URL 模式的所有 @RequestMapping 方法中列出的 HTTP 方法列表。簡單說當(dāng)你通過OPTIONS請(qǐng)求一個(gè)URL時(shí),Allow的響應(yīng)頭會(huì)設(shè)置為你@RequestMapping(method = ...)這里你method設(shè)置的列表+OPTIONS,如下示例:jLF28資訊網(wǎng)——每日最新資訊28at.com

@RequestMapping(value = "/o", method = {RequestMethod.DELETE, RequestMethod.HEAD})public Object o() {  System.out.println("o....") ;  return "h method..." ;}

當(dāng)上面的接口通過OPTIONS請(qǐng)求時(shí),那么響應(yīng)header Allow將設(shè)置為如下:jLF28資訊網(wǎng)——每日最新資訊28at.com

圖片圖片jLF28資訊網(wǎng)——每日最新資訊28at.com

如果你的@RequestMapping沒有指定method屬性值,那么Allow 頭信息會(huì)被設(shè)置為 GET,HEAD,POST,PUT,PATCH,DELETE,OPTIONS。上面的即可刪除method屬性再次請(qǐng)求如下:jLF28資訊網(wǎng)——每日最新資訊28at.com

圖片圖片jLF28資訊網(wǎng)——每日最新資訊28at.com

2.2 自定義請(qǐng)求注解

在某些場(chǎng)景下你可能需要自定義自己的一些注解來配置通用的匹配模式,那么這時(shí)候通過自定義請(qǐng)求注解的方式是非常合適的,而不用你對(duì)每一個(gè)請(qǐng)求都去做重復(fù)的事。jLF28資訊網(wǎng)——每日最新資訊28at.com

自定義請(qǐng)求注解jLF28資訊網(wǎng)——每日最新資訊28at.com

@Target(ElementType.METHOD)@Retention(RetentionPolicy.RUNTIME)@Documented@RequestMappingpublic @interface PackMapping { @AliasFor(annotation = RequestMapping.class) String name() default ""; @AliasFor(annotation = RequestMapping.class) String[] value() default {}; @AliasFor(annotation = RequestMapping.class) // 配置只能是GET或POST方法 RequestMethod[] method() default {RequestMethod.GET, RequestMethod.POST} ; @AliasFor(annotation = RequestMapping.class) String[] path() default {}; @AliasFor(annotation = RequestMapping.class) String[] params() default {}; // 設(shè)置請(qǐng)求header必須包含X-API-Version并且值必須是v1 @AliasFor(annotation = RequestMapping.class) String[] headers() default {"X-API-Versinotallow=v1"}; @AliasFor(annotation = RequestMapping.class) String[] consumes() default {}; @AliasFor(annotation = RequestMapping.class) String[] produces() default {};}

測(cè)試Controller接口jLF28資訊網(wǎng)——每日最新資訊28at.com

@PackMapping("/v")public Object v() {  System.out.println("自定義請(qǐng)求注解....") ;  return "PackMapping method..." ;}

輸出結(jié)果jLF28資訊網(wǎng)——每日最新資訊28at.com

圖片圖片jLF28資訊網(wǎng)——每日最新資訊28at.com

請(qǐng)求中必須攜帶X-API-Version請(qǐng)求header。jLF28資訊網(wǎng)——每日最新資訊28at.com

2.3 動(dòng)態(tài)顯示注冊(cè)接口

你可以通過編程方式注冊(cè)處理程序方法,這些方法可以用于動(dòng)態(tài)注冊(cè)或高級(jí)情況,例如不同URL下的同一處理程序的不同實(shí)例,如下示例:jLF28資訊網(wǎng)——每日最新資訊28at.com

@Configurationpublic class CustomWebConfig {  @Autowired  public void setHandlerMapping(RequestMappingHandlerMapping mapping, UserService handler)      throws NoSuchMethodException {    BuilderConfiguration options = new BuilderConfiguration() ;    options.setPatternParser(new PathPatternParser()) ;    RequestMappingInfo info = RequestMappingInfo.paths("/api/user/{id}").methods(RequestMethod.GET).options(options ).build();    Method method = UserHandler.class.getMethod("getUser", Integer.class) ;    mapping.registerMapping(info, handler, method);  }}

UserServicejLF28資訊網(wǎng)——每日最新資訊28at.com

@Componentpublic class UserHandler {    @ResponseBody  public User getUser(@PathVairable("id")Integer id) {    User user = new User() ;    user.setId(id) ;    user.setName("張三") ;    return user ;  }}

輸出結(jié)果jLF28資訊網(wǎng)——每日最新資訊28at.com

圖片圖片jLF28資訊網(wǎng)——每日最新資訊28at.com

以上是本篇文章的全部內(nèi)容,如對(duì)你有幫助就請(qǐng)作者吃個(gè)棒棒糖

本文鏈接:http://www.tebozhan.com/showinfo-26-86221-0.html基于注解的Controller接口這些高級(jí)功能,你都知道嗎?

聲明:本網(wǎng)頁內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。郵件:2376512515@qq.com

上一篇: 21 道JavaWeb經(jīng)典面試題總結(jié)

下一篇: 大模型下B端前端代碼輔助生成的思考與實(shí)踐

標(biāo)簽:
  • 熱門焦點(diǎn)
  • 小米降噪藍(lán)牙耳機(jī)Necklace分享:聽一首歌 讀懂一個(gè)故事

    在今天下午的小米Civi 2新品發(fā)布會(huì)上,小米還帶來了一款新的降噪藍(lán)牙耳機(jī)Necklace,我們也在發(fā)布結(jié)束的第一時(shí)間給大家?guī)磉@款耳機(jī)的簡單分享。現(xiàn)在大家能見到最多的藍(lán)牙耳機(jī)
  • SpringBoot中使用Cache提升接口性能詳解

    環(huán)境:springboot2.3.12.RELEASE + JSR107 + Ehcache + JPASpring 框架從 3.1 開始,對(duì) Spring 應(yīng)用程序提供了透明式添加緩存的支持。和事務(wù)支持一樣,抽象緩存允許一致地使用各
  • 讓我們一起聊聊文件的操作

    文件【1】文件是什么?文件是保存數(shù)據(jù)的地方,是數(shù)據(jù)源的一種,比如大家經(jīng)常使用的word文檔、txt文件、excel文件、jpg文件...都是文件。文件最主要的作用就是保存數(shù)據(jù),它既可以保
  • 慕巖炮轟抖音,百合網(wǎng)今何在?

    來源:價(jià)值研究所 作者:Hernanderz“難道就因?yàn)樽约旱囊粋€(gè)產(chǎn)品牛逼了,從客服到總裁,都不愿意正視自己產(chǎn)品和運(yùn)營上的問題,選擇逃避了嗎?”這一番話,出自百合網(wǎng)聯(lián)合創(chuàng)
  • 中國家電海外掘金正當(dāng)時(shí)|出海專題

    作者|吳南南編輯|胡展嘉運(yùn)營|陳佳慧出品|零態(tài)LT(ID:LingTai_LT)2023年,出海市場(chǎng)戰(zhàn)況空前,中國創(chuàng)業(yè)者在海外紛紛摩拳擦掌,以期能夠把中國的商業(yè)模式、創(chuàng)業(yè)理念、戰(zhàn)略打法輸出海外,他們依
  • 信通院:小米、華為等11家應(yīng)用商店基本完成APP簽名及驗(yàn)簽工作

    中國信通院表示,目前,小米、華為、OPPO、vivo、360手機(jī)助手、百度手機(jī)助手、應(yīng)用寶、豌豆莢和努比亞等9家應(yīng)用商店,以及抖音和快手2家新型應(yīng)用分發(fā)平
  • OPPO K11樣張首曝:千元機(jī)影像“卷”得真不錯(cuò)!

    一直以來,OPPO K系列機(jī)型都保持著較為均衡的產(chǎn)品體驗(yàn),歷來都是2K價(jià)位的明星機(jī)型,去年推出的OPPO K10和OPPO K10 Pro兩款機(jī)型憑借各自的出色配置,堪稱有
  • 蘋果140W USB-C充電器:采用氮化鎵技術(shù)

    據(jù)10 月 30 日 9to5 Mac 消息報(bào)道,當(dāng)蘋果推出新的 MacBook Pro 2021 時(shí),該公司還推出了新的 140W USB-C 充電器,附贈(zèng)在 MacBook Pro 16 英寸機(jī)型的盒子里,也支
  • 華為舉行春季智慧辦公新品發(fā)布會(huì) 首次推出電子墨水屏平板

    北京時(shí)間2月27日晚,華為在巴塞羅那舉行春季智慧辦公新品發(fā)布會(huì),在海外市場(chǎng)推出之前已經(jīng)在中國市場(chǎng)上市的筆記本、平板、激光打印機(jī)等辦公產(chǎn)品,并首次推出搭載
Top