摘要:靜態資源處理啟動加載日志處理回顧初識過濾器監聽器攔截器我們通過啟動日志,可以發現,默認提供了靜態資源處理。
Spring Boot - 靜態資源處理、啟動加載、日志處理 回顧
Spring Boot-初識 Hello World
Spring Boot - Servlet、過濾器、監聽器、攔截器
我們通過啟動日志,可以發現,spring boot 默認提供了靜態資源處理。接下來,我們了解下,該如何應用默認配置,如何自定義靜態資源處理。
INFO o.s.w.s.h.SimpleUrlHandlerMapping - Mapped URL path [/webjars/**] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler] INFO o.s.w.s.h.SimpleUrlHandlerMapping - Mapped URL path [/**] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler] INFO o.s.w.s.h.SimpleUrlHandlerMapping - Mapped URL path [/**/favicon.ico] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler]靜態資源處理
建議大家使用Spring Boot的默認配置方式,如果需要特殊處理的再通過配置進行修改。本文主要講解Spring Boot的默認處理方式
默認資源映射其中默認配置的 /** 映射到 /static (或/public、/resources、/META-INF/resources)
優先級順序為:META-INF/resources > resources > static > public
目錄結構:
自定義資源映射上面我們介紹了Spring Boot 的默認資源映射,一般夠用了,那我們如何自定義目錄?
增加 /2017imgs/ 映射到 classpath:/2017imgs/
實現類Config繼承 WebMvcConfigurerAdapter 并重寫方法 addResourceHandlers
在resources目錄下,增加2017imgs文件夾
package com.wanye; import org.springframework.context.annotation.Configuration; import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry; import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter; /** * Created by wanye on 2017/6/3. */ @Configuration public class Config extends WebMvcConfigurerAdapter{ @Override public void addResourceHandlers(ResourceHandlerRegistry registry) { registry.addResourceHandler("/2017imgs/**").addResourceLocations("classpath:/2017imgs/"); } }
訪問2017imgs文件夾中的demo.jpg 圖片的地址為 http://localhost:8080/2017img...
實際工作中,我們自己處理靜態資源的情況是非常少的,靜態資源大多數情況,都被放在多帶帶的靜態資源服務器,并且通過cdn來加速訪問。
配置特殊的擴展名2017-06-15追加
看到Springboot 配置*.do請求這樣一個問題,作答如下
先說一下思路:
1.dispatcherServlet會接管所有請求(包括靜態資源請求),如果修改默認的UrlMapping為*.do,那么一定會導致靜態資源無法加載。
2.仔細思考一下題主的的場景,目的希望所有*.do(擴展名)的請求,映射到controller中的method上。(對嗎?)
3.那么問題就簡單了,參考@RequestMapping所使用的規則
*The mapping matches URLs using the following rules:
*
將映射規則調整為
/** * Created by wanye on 2017/5/20. */ @RestController // @Controller + @ResponseBody @RequestMapping("**.do") public class HelloController { @RequestMapping(name = "hello") public Maphello(){ Map hello = new HashMap (); hello.put("data", "hello 小紅"); hello.put("status", "SUCCESS"); return hello; } }
當然這只是一個例子,題主可以將@RequestMapping("**.do")配置抽象到基類中。
啟動加載實際應用中,我們會有在項目服務啟動的時候就去加載一些數據或做一些事情這樣的需求。例如:白名單初始化、緩存加載、消息通知等等。為了解決這樣的問題,Spring Boot 為我們提供了一個方法,只需要我們創建類,并實現接口CommandLineRunner,當然這個類需要被spring掃描到(不要忘了增加注解)
package com.wanye; import org.springframework.boot.CommandLineRunner; import org.springframework.stereotype.Component; /** * Created by wanye on 2017/6/3. */ @Component @Order(1) public class CacheInit implements CommandLineRunner { @Override public void run(String... args) throws Exception { System.out.println(">>cache init<<"); } }
當有多個啟動加載的類,可以通過@Order來指定加載順序,按value值從小到大順序來執行。Spring Boot會將啟動參數傳給自定義啟動加載的類中run方法。
日志處理Spring Boot在所有內部日志中使用Apache Commons Logging,但是默認配置也提供了對常用日志的支持,如:Java Util Logging,Log4J, Log4J2和Logback。每種Logger都可以通過配置使用控制臺或者文件輸出日志內容。本文,主要講解自定義日志配置,并以logback為例進行演示。
自定義配置由于日志服務一般都在ApplicationContext創建前就初始化了,它并不是必須通過Spring的配置文件控制。因此通過系統屬性和傳統的Spring Boot外部配置文件依然可以很好的支持日志控制和管理。
根據不同的日志組件,按如下規則給文件命名,就能被正確加載:
Logback:logback-spring.xml, logback-spring.groovy, logback.xml, logback.groovy Log4j:log4j-spring.properties, log4j-spring.xml, log4j.properties, log4j.xml Log4j2:log4j2-spring.xml, log4j2.xml JDK (Java Util Logging):logging.properties
Spring Boot官方推薦優先使用帶有-spring的文件名作為你的日志配置(如使用logback-spring.xml,而不是logback.xml)
logback%d [%t] %5p %logger - %m%n hello.log hello.%d{yyyy-MM-dd}.log 30 %d{HH:mm:ss.SSS} [%thread] %-5level %logger{35} - %msg %n
控制臺輸出ConsoleAppender
在開發過程中最常用的是將日志輸出到控制臺
文件輸出RollingFileAppender
另一種常見的日志輸出到文件,隨著應用的運行時間越來越長,日志也會增長的越來越多,將他們輸出到同一個文件并非一個好辦法。RollingFileAppender用于切分文件日志.
其中重要的是rollingPolicy的定義,上例中hello.%d{yyyy-MM-dd}.log定義了日志的切分方式——把每一天的日志歸檔到一個文件中,30表示只保留最近30天的日志,以防止日志填滿整個磁盤空間。同理,可以使用%d{yyyy-MM-dd_HH-mm}來定義精確到分的日志切分方式。
總結
靜態資源處理
默認資源映射(/** - > /resources/static) ,重點是默認目錄的優先級
?定義資源映射 (繼承WebMvcConfigurerAdapter 并重寫方法addResourceHandlers)
啟動加載
CommandLineRunner (實現接?,多個類加載的優先級)
日志處理
logback(配置,控制臺輸出,文件輸出)
最后如果覺得我的文章對您有用,請點贊、收藏。您的支持將鼓勵我繼續創作!視頻課程
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/71137.html
摘要:學習筆記使用很容易創建一個獨立運行運行內嵌容器準生產級別的基于框架的項目,使用你可以不用或者只需要很少的配置。異常消息如果這個錯誤是由異常引起的。錯誤發生時請求的路徑。 Spring-Boot 1.5 學習筆記 使用Spring Boot很容易創建一個獨立運行(運行jar,內嵌Servlet容器)、準生產級別的基于Spring框架的項目,使用Spring Boot你可以不用或者只需要很...
摘要:背景這段時間較忙,有些想念小紅,為了表達我對小紅的思念之情,決定將啟動的研究一下,看看是否能夠自定義,讓我天天能夠看到她。 背景 這段時間較忙,有些想念小紅,為了表達我對小紅的思念之情,決定將spring boot啟動的banner研究一下,看看是否能夠自定義,讓我天天能夠看到她。 展示 經過調研,發現自定義banner是一個輕松愉快的過程,忍不住讓我多啟動幾次,先看看效果:(省略了一...
摘要:開發應用程序非常適合應用程序開發,通過使用嵌入式或,你可以創建一個自包含的服務器。如果你還沒有開發過一個應用程序,你可以按照入門部分中的示例進行操作。自動配置為大多數應用程序提供了良好的自動配置。 27. 開發Web應用程序 Spring Boot非常適合web應用程序開發,通過使用嵌入式Tomcat、Jetty、Undertow或Netty,你可以創建一個自包含的HTTP服務器。大多...
摘要:當面講給你聽講堂地址,或許是最實用的教程,新課促銷中,只要你敢來,保你收貨滿滿。優惠報名全程擼碼快速入門教程全原價,優惠價全程擼碼進階全原價,優惠價 回顧 Spring Boot - 初識 Hello World Spring Boot - Servlet、過濾器、監聽器、攔截器 Spring Boot - 靜態資源處理、啟動加載、日志處理 Spring Boot - 部署Deplo...
摘要:觸發器文件可以手動更新,也可以使用插件進行更新。例如,要配置重新啟動以始終使用觸發器文件,你需要添加以下屬性遠程應用程序開發工具并不局限于本地開發,在遠程運行應用程序時,還可以使用幾個特性。 20. 開發者工具 Spring Boot包括一組額外的工具,這些工具可以使應用程序開發體驗變得更加愉快,spring-boot-devtools模塊可以包含在任何項目中,以提供額外的develo...
閱讀 1951·2021-10-12 10:12
閱讀 3078·2019-08-30 15:44
閱讀 848·2019-08-30 15:43
閱讀 3000·2019-08-30 14:02
閱讀 2085·2019-08-30 12:54
閱讀 3506·2019-08-26 17:05
閱讀 1988·2019-08-26 13:34
閱讀 1060·2019-08-26 11:54