日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當前位置:首頁 > 科技  > 軟件

請一定掌握SpringBoot這四個高級開發技巧

來源: 責編: 時間:2024-06-14 08:46:27 202觀看
導讀環境:SpringBoot3.2.51. 輸出所有Controller接口信息有時,為了更便捷地排查問題,我們可能希望在容器啟動時能夠打印出當前項目中所有的Controller接口信息。這樣做可以提供一個清晰的項目接口概覽,從而幫助我們更快速地定

環境:SpringBoot3.2.5PCb28資訊網——每日最新資訊28at.com

1. 輸出所有Controller接口信息

有時,為了更便捷地排查問題,我們可能希望在容器啟動時能夠打印出當前項目中所有的Controller接口信息。這樣做可以提供一個清晰的項目接口概覽,從而幫助我們更快速地定位和解決可能出現的問題。PCb28資訊網——每日最新資訊28at.com

方式1

logging:  level:    web: trace

輸出結果PCb28資訊網——每日最新資訊28at.com

圖片圖片PCb28資訊網——每日最新資訊28at.com

雖然達到了目的,但是這將所有web分組的日志都進行輸出了,日志信息非常多,我們所期望的僅僅是輸出Controller相關的信息。PCb28資訊網——每日最新資訊28at.com

方式2

logging:  level:    '[_org.springframework.web.servlet.HandlerMapping.Mappings]': debug

輸出結果PCb28資訊網——每日最新資訊28at.com

圖片圖片PCb28資訊網——每日最新資訊28at.com

通過上面的設置,此時日志信息只輸出了Controller接口,其它的都按照默認的輸出。PCb28資訊網——每日最新資訊28at.com

2. 統計接口調用耗時

一般我們在不借助第三方工具的情況下,打印接口耗時通常會在接口處理邏輯的開始和結束位置分別記錄當前時間戳,然后計算時間差來獲取耗時,如下示例:PCb28資訊網——每日最新資訊28at.com

@GetMapping("/time")public Object time() throws Exception {  Instant startTime = Instant.now() ;  // TODO, 業務操作  System.err.printf("接口耗時: %d 毫秒%n", (Duration.between(startTime, Instant.now()).toMillis())) ;  return "take time" ;}

上面統計了耗時情況,但是不夠準確,為了更準確地反應處整個請求處理過程的耗時,包括Spring框架根據請求查找對應的Controller、攔截器執行等操作,SpringMVC在這些過程執行完成后是發布了一個事件,我們可以通過監聽該事件來獲取整個請求生命周期的耗時,如下示例:PCb28資訊網——每日最新資訊28at.com

@Componentpublic class TakeTimeCountListener implements ApplicationListener<ServletRequestHandledEvent> {  @Override  public void onApplicationEvent(ServletRequestHandledEvent event) {    Throwable failureCause = event.getFailureCause() ;    if (failureCause != null) {      System.err.printf("錯誤原因: %s%n", failureCause.getMessage()) ;    }    System.err.printf("請求客戶端地址:%s, 請求URL: %s, 請求Method: %s, 請求耗時: %d%n",         event.getClientAddress(),         event.getRequestUrl(),         event.getMethod(),        event.getProcessingTimeMillis()) ;  }}

通過監聽ServletRequestHandledEvent事件,可以有效的獲取客戶端地址,請求的URL等完整的信息,其中ProcessingTimeMillis屬性反應的就是這個請求耗時情況。PCb28資訊網——每日最新資訊28at.com

圖片圖片PCb28資訊網——每日最新資訊28at.com

是不是非常的方便及準確!PCb28資訊網——每日最新資訊28at.com

3. 動態注冊靜態資源

通常情況下,一般都是在配置文件中或者自定義WebMvcConfigurer進行靜態資源的配置及注冊,如下示例:PCb28資訊網——每日最新資訊28at.com

spring:  web:    resources:      static-locations: classpath:/META-INF/resources/,classpath:/resources/,classpath:/static/,classpath:/public/

以上是默認的路徑,我們可以在這自定義自己的今天資源路徑。如下添加文件系統目錄PCb28資訊網——每日最新資訊28at.com

spring:  web:    resources:      static-locations: ..., file:///d:/images/

也可以通過編程的方式注冊靜態資源PCb28資訊網——每日最新資訊28at.com

public class WebConfig implements WebMvcConfigurer {  public void addResourceHandlers(ResourceHandlerRegistry registry) {    registry.addResourceHandler("/images/**").addResourceLocations("file:///d://images//") ;  }}

以上方式都是實現配置或代碼中定義好,這都需要重啟服務,無法做到實時生效。要想實時生效可以通過如下方式動態注冊PCb28資訊網——每日最新資訊28at.com

@RestControllerpublic class RegController {  @Resource  private SimpleUrlHandlerMapping resourceHandlerMapping ;  @Resource  private ApplicationContext context ;  // 如:requestURI=/s/**, path=d:/images/  @GetMapping("")  public Object reg(String requestURI, String path) throws Throwable {    ResourceHttpRequestHandler handler = new ResourceHttpRequestHandler();    handler.setLocations(List.of(new FileSystemResource(path))) ;    handler.setApplicationContext(context) ;    handler.afterPropertiesSet() ;    resourceHandlerMapping.registerHandler(requestURI, handler);    return "register success";  }}

通過如上方式動態注冊靜態資源,你也可以對相應的靜態資源進行刪除。PCb28資訊網——每日最新資訊28at.com

4. 容器啟動完成操作

當你希望Spring容器正確初始化加載完成以后,執行一些操作,那么你可以監聽ContextRefreshedEvent事件。該實際的觸發是在refresh方法執行的最后階段。PCb28資訊網——每日最新資訊28at.com

@Componentpublic class ContextRefreshedListener implements ApplicationListener<ContextRefreshedEvent> {  @Override  public void onApplicationEvent(ContextRefreshedEvent event) {    System.out.println("上下文刷新完成...") ;    // TODO  }}

通過監聽該事件,你可以在這里實現你自己的邏輯。PCb28資訊網——每日最新資訊28at.com

本文鏈接:http://m.www897cc.com/showinfo-26-93678-0.html請一定掌握SpringBoot這四個高級開發技巧

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: 實力與顏值并存,華為 PC 雙新品榮登 CHIP 榜單前三

下一篇: 對比Word和Markdown,為什么LaTeX更受專業人士歡迎

標簽:
  • 熱門焦點
  • 分布式系統中的CAP理論,面試必問,你理解了嘛?

    對于剛剛接觸分布式系統的小伙伴們來說,一提起分布式系統,就感覺高大上,深不可測。而且看了很多書和視頻還是一臉懵逼。這篇文章主要使用大白話的方式,帶你理解一下分布式系統
  • 虛擬鍵盤 API 的妙用

    你是否在遇到過這樣的問題:移動設備上有一個固定元素,當激活虛擬鍵盤時,該元素被隱藏在了鍵盤下方?多年來,這一直是 Web 上的默認行為,在本文中,我們將探討這個問題、為什么會發生
  • 從零到英雄:高并發與性能優化的神奇之旅

    作者 | 波哥審校 | 重樓作為公司的架構師或者程序員,你是否曾經為公司的系統在面對高并發和性能瓶頸時感到手足無措或者焦頭爛額呢?筆者在出道那會為此是吃盡了苦頭的,不過也得
  • 自律,給不了Keep自由!

    來源 | 互聯網品牌官作者 | 李大為編排 | 又耳 審核 | 谷曉輝自律能不能給用戶自由暫時不好說,但大概率不能給Keep自由。近日,全球最大的在線健身平臺Keep正式登陸港交所,努力
  • 認真聊聊東方甄選:如何告別低垂的果實

    來源:山核桃作者:財經無忌爆火一年后,俞敏洪和他的東方甄選依舊是頗受外界關心的&ldquo;網紅&rdquo;。7月5日至9日,為期5天的東方甄選&ldquo;甘肅行&rdquo;首次在自有App內直播,
  • 8月見!小米MIX Fold 3獲得3C認證:支持67W快充

    這段時間以來,包括三星、一加、榮耀等等有不少品牌旗下的最新折疊屏旗艦都得到了不少爆料,而小米新一代折疊屏旗艦——小米MIX Fold 3此前也屢屢被傳
  • 華為發布HarmonyOS 4:更好玩、更流暢、更安全

    在8月4日的華為開發者大會2023(HDC.Together)大會上,HarmonyOS 4正式發布。自2019年發布以來,HarmonyOS一直以用戶為中心,經歷四年多的發展HarmonyOS已
  • 三星電子Q2營收60萬億韓元 存儲業務營收同比仍下滑超過50%

    7月27日消息,據外媒報道,從三星電子所發布的財報來看,他們主要利潤來源的存儲芯片業務在今年二季度仍不樂觀,營收同比仍在大幅下滑,所在的設備解決方案
  • 超閉合精工鉸鏈 徹底消滅縫隙 三星Galaxy Z Flip5與Galaxy Z Fold5發布

    2023年7月26日,三星電子正式發布了Galaxy Z Flip5與Galaxy Z Fold5。三星新一代折疊屏手機采用超閉合精工鉸鏈,讓折疊后的縫隙不再可見。同時,配合處
Top 日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不
亚洲精品黄色| 国产精品区一区| 久久久精品午夜少妇| 久久成人av少妇免费| 美女露胸一区二区三区| 欧美精品一卡| 国产精品久久久久aaaa九色| 国产日韩欧美| 亚洲激情国产精品| 亚洲天堂成人在线视频| 久久电影一区| 欧美国产日韩二区| 欧美午夜不卡影院在线观看完整版免费| 国产精品久久久久一区| 极品少妇一区二区三区精品视频| 亚洲精品偷拍| 欧美一区二区国产| 男同欧美伦乱| 国产精品入口福利| 亚洲国产成人tv| 亚洲一线二线三线久久久| 久久久999精品视频| 欧美日韩国产页| 黑人巨大精品欧美一区二区| 亚洲乱码国产乱码精品精98午夜| 香蕉久久夜色精品国产使用方法| 欧美成人精品一区二区三区| 国产精品日韩高清| 亚洲人成在线观看| 欧美伊人久久久久久午夜久久久久 | 影音先锋国产精品| 99精品国产高清一区二区| 欧美在线精品一区| 欧美日韩成人一区二区三区| 国产主播一区二区三区| 亚洲天堂免费在线观看视频| 老鸭窝亚洲一区二区三区| 国产精品女人毛片| 999在线观看精品免费不卡网站| 久久精视频免费在线久久完整在线看| 欧美日韩精品在线观看| 影音先锋一区| 欧美一级久久久| 欧美三级中文字幕在线观看| 在线日韩欧美| 久久福利毛片| 国产精品久久久久一区二区三区共| 91久久精品一区二区别| 久久高清一区| 国产精品午夜春色av| 99re6热在线精品视频播放速度| 久久婷婷国产麻豆91天堂| 国产欧美日韩精品在线| 亚洲少妇中出一区| 欧美激情精品久久久久久久变态| 狠狠操狠狠色综合网| 午夜精品电影| 国产精品国产三级国产a| 亚洲精品欧美一区二区三区| 美女精品在线| 极品少妇一区二区三区精品视频| 欧美一级一区| 国产精品视频一| 亚洲视频在线视频| 欧美日韩国产一中文字不卡| 亚洲精品日韩激情在线电影| 欧美aaa级| 在线精品亚洲| 久久综合九色综合欧美就去吻| 国产一区二区三区的电影| 亚欧美中日韩视频| 国产精品夜色7777狼人| 亚洲一线二线三线久久久| 欧美午夜激情视频| 亚洲视频图片小说| 欧美视频中文字幕在线| 在线视频免费在线观看一区二区| 欧美日本一道本| 99国产精品国产精品久久| 欧美区高清在线| av成人免费在线| 欧美日韩亚洲激情| 一区二区三区免费在线观看| 欧美日韩系列| 亚洲视频导航| 国产精品久在线观看| 亚洲欧美偷拍卡通变态| 国产欧美日韩一区二区三区在线 | 亚洲性感美女99在线| 欧美日韩在线视频首页| 一区二区精品在线| 欧美视频一区二区三区…| 亚洲视频 欧洲视频| 国产精品久久久久久久久久妞妞| 亚洲一区二区在| 国产精品一区免费视频| 欧美在线亚洲| 影音先锋亚洲视频| 欧美黄色aaaa| 一区二区冒白浆视频| 国产精品久久久999| 性久久久久久| 狠狠色丁香婷综合久久| 欧美成人精品影院| 99国内精品久久| 国产精品久久久久久久久动漫| 亚洲免费在线电影| 国产一区二区三区免费观看| 久久综合久久88| 亚洲免费观看视频| 国产精品欧美风情| 久久精品一区二区国产| 亚洲第一主播视频| 欧美日韩国产高清| 亚洲欧美99| 一区二区三区在线免费观看| 欧美激情精品久久久久久久变态| 一区二区三区欧美视频| 国产视频综合在线| 欧美福利一区| 亚洲一级二级| 韩日在线一区| 欧美日韩国产大片| 欧美在线一二三区| 亚洲人成亚洲人成在线观看| 国产精品国产三级国产a| 久久久久久久久岛国免费| 亚洲日本黄色| 国产精品日韩二区| 你懂的成人av| 亚洲影院在线观看| 一区二区视频免费完整版观看| 欧美激情欧美狂野欧美精品| 亚洲女人av| 亚洲国产经典视频| 国产精品久久久久影院亚瑟| 久久综合狠狠综合久久综合88| 夜夜爽99久久国产综合精品女不卡| 国产日本亚洲高清| 欧美区二区三区| 久久久久综合网| 亚洲午夜一级| 亚洲国产精品va在线看黑人| 国产精品一区免费视频| 欧美国产先锋| 久久xxxx| 亚洲视频网站在线观看| 在线看片第一页欧美| 国产精品久久综合| 欧美久久电影| 久久久一二三| 亚洲欧美国产视频| 亚洲精品一级| 狠狠色综合播放一区二区| 国产精品xxxxx| 欧美高清视频| 久久久亚洲高清| 性色一区二区三区| 99国内精品久久久久久久软件| 精品不卡视频| 国产欧美日韩免费看aⅴ视频| 欧美人与性禽动交情品| 久久综合伊人77777蜜臀| 香蕉精品999视频一区二区| 日韩亚洲欧美成人| 亚洲电影观看| 黄色精品一区二区| 国产欧美日韩亚洲| 欧美小视频在线| 欧美激情2020午夜免费观看| 久久视频在线视频| 欧美一区亚洲二区| 亚洲尤物视频在线| 99热这里只有精品8| 亚洲黄色有码视频| 亚洲电影成人| 一区二区亚洲精品国产| 国产手机视频一区二区| 国产精品久久久久三级| 欧美四级在线| 欧美日韩中文字幕在线| 欧美激情久久久久久| 美女精品自拍一二三四| 久久久天天操| 久久精品国产第一区二区三区| 亚洲欧美在线一区| 亚洲自拍偷拍一区| 亚洲一区二区四区| 亚洲桃花岛网站| 亚洲无线视频| 亚洲一区二区三区乱码aⅴ蜜桃女 亚洲一区二区三区乱码aⅴ | 国产精品国产精品| 欧美日韩国产成人高清视频| 女女同性精品视频| 麻豆av福利av久久av| 玖玖综合伊人| 久久天天狠狠| 美女国产一区| 欧美va天堂在线| 欧美jjzz| 欧美精品午夜| 欧美日韩mv| 欧美视频在线观看视频极品| 欧美日韩hd|