摘要:靜態(tài)資源處理啟動加載日志處理回顧初識過濾器監(jiān)聽器攔截器我們通過啟動日志,可以發(fā)現(xiàn),默認(rèn)提供了靜態(tài)資源處理。
Spring Boot - 靜態(tài)資源處理、啟動加載、日志處理 回顧
Spring Boot-初識 Hello World
Spring Boot - Servlet、過濾器、監(jiān)聽器、攔截器
我們通過啟動日志,可以發(fā)現(xiàn),spring boot 默認(rèn)提供了靜態(tài)資源處理。接下來,我們了解下,該如何應(yīng)用默認(rèn)配置,如何自定義靜態(tài)資源處理。
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]靜態(tài)資源處理
建議大家使用Spring Boot的默認(rèn)配置方式,如果需要特殊處理的再通過配置進(jìn)行修改。本文主要講解Spring Boot的默認(rèn)處理方式
默認(rèn)資源映射其中默認(rèn)配置的 /** 映射到 /static (或/public、/resources、/META-INF/resources)
優(yōu)先級順序?yàn)椋篗ETA-INF/resources > resources > static > public
目錄結(jié)構(gòu):
自定義資源映射上面我們介紹了Spring Boot 的默認(rèn)資源映射,一般夠用了,那我們?nèi)绾巫远x目錄?
增加 /2017imgs/ 映射到 classpath:/2017imgs/
實(shí)現(xiàn)類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...
實(shí)際工作中,我們自己處理靜態(tài)資源的情況是非常少的,靜態(tài)資源大多數(shù)情況,都被放在多帶帶的靜態(tài)資源服務(wù)器,并且通過cdn來加速訪問。
配置特殊的擴(kuò)展名2017-06-15追加
看到Springboot 配置*.do請求這樣一個問題,作答如下
先說一下思路:
1.dispatcherServlet會接管所有請求(包括靜態(tài)資源請求),如果修改默認(rèn)的UrlMapping為*.do,那么一定會導(dǎo)致靜態(tài)資源無法加載。
2.仔細(xì)思考一下題主的的場景,目的希望所有*.do(擴(kuò)展名)的請求,映射到controller中的method上。(對嗎?)
3.那么問題就簡單了,參考@RequestMapping所使用的規(guī)則
*The mapping matches URLs using the following rules:
*
將映射規(guī)則調(diào)整為
/** * 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; } }
當(dāng)然這只是一個例子,題主可以將@RequestMapping("**.do")配置抽象到基類中。
啟動加載實(shí)際應(yīng)用中,我們會有在項(xiàng)目服務(wù)啟動的時候就去加載一些數(shù)據(jù)或做一些事情這樣的需求。例如:白名單初始化、緩存加載、消息通知等等。為了解決這樣的問題,Spring Boot 為我們提供了一個方法,只需要我們創(chuàng)建類,并實(shí)現(xiàn)接口CommandLineRunner,當(dāng)然這個類需要被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<<"); } }
當(dāng)有多個啟動加載的類,可以通過@Order來指定加載順序,按value值從小到大順序來執(zhí)行。Spring Boot會將啟動參數(shù)傳給自定義啟動加載的類中run方法。
日志處理Spring Boot在所有內(nèi)部日志中使用Apache Commons Logging,但是默認(rèn)配置也提供了對常用日志的支持,如:Java Util Logging,Log4J, Log4J2和Logback。每種Logger都可以通過配置使用控制臺或者文件輸出日志內(nèi)容。本文,主要講解自定義日志配置,并以logback為例進(jìn)行演示。
自定義配置由于日志服務(wù)一般都在ApplicationContext創(chuàng)建前就初始化了,它并不是必須通過Spring的配置文件控制。因此通過系統(tǒng)屬性和傳統(tǒng)的Spring Boot外部配置文件依然可以很好的支持日志控制和管理。
根據(jù)不同的日志組件,按如下規(guī)則給文件命名,就能被正確加載:
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官方推薦優(yōu)先使用帶有-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
在開發(fā)過程中最常用的是將日志輸出到控制臺
文件輸出RollingFileAppender
另一種常見的日志輸出到文件,隨著應(yīng)用的運(yùn)行時間越來越長,日志也會增長的越來越多,將他們輸出到同一個文件并非一個好辦法。RollingFileAppender用于切分文件日志.
其中重要的是rollingPolicy的定義,上例中hello.%d{yyyy-MM-dd}.log定義了日志的切分方式——把每一天的日志歸檔到一個文件中,30表示只保留最近30天的日志,以防止日志填滿整個磁盤空間。同理,可以使用%d{yyyy-MM-dd_HH-mm}來定義精確到分的日志切分方式。
總結(jié)
靜態(tài)資源處理
默認(rèn)資源映射(/** - > /resources/static) ,重點(diǎn)是默認(rèn)目錄的優(yōu)先級
?定義資源映射 (繼承WebMvcConfigurerAdapter 并重寫方法addResourceHandlers)
啟動加載
CommandLineRunner (實(shí)現(xiàn)接?,多個類加載的優(yōu)先級)
日志處理
logback(配置,控制臺輸出,文件輸出)
最后如果覺得我的文章對您有用,請點(diǎn)贊、收藏。您的支持將鼓勵我繼續(xù)創(chuàng)作!視頻課程
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/71137.html
摘要:學(xué)習(xí)筆記使用很容易創(chuàng)建一個獨(dú)立運(yùn)行運(yùn)行內(nèi)嵌容器準(zhǔn)生產(chǎn)級別的基于框架的項(xiàng)目,使用你可以不用或者只需要很少的配置。異常消息如果這個錯誤是由異常引起的。錯誤發(fā)生時請求的路徑。 Spring-Boot 1.5 學(xué)習(xí)筆記 使用Spring Boot很容易創(chuàng)建一個獨(dú)立運(yùn)行(運(yùn)行jar,內(nèi)嵌Servlet容器)、準(zhǔn)生產(chǎn)級別的基于Spring框架的項(xiàng)目,使用Spring Boot你可以不用或者只需要很...
摘要:背景這段時間較忙,有些想念小紅,為了表達(dá)我對小紅的思念之情,決定將啟動的研究一下,看看是否能夠自定義,讓我天天能夠看到她。 背景 這段時間較忙,有些想念小紅,為了表達(dá)我對小紅的思念之情,決定將spring boot啟動的banner研究一下,看看是否能夠自定義,讓我天天能夠看到她。 展示 經(jīng)過調(diào)研,發(fā)現(xiàn)自定義banner是一個輕松愉快的過程,忍不住讓我多啟動幾次,先看看效果:(省略了一...
摘要:開發(fā)應(yīng)用程序非常適合應(yīng)用程序開發(fā),通過使用嵌入式或,你可以創(chuàng)建一個自包含的服務(wù)器。如果你還沒有開發(fā)過一個應(yīng)用程序,你可以按照入門部分中的示例進(jìn)行操作。自動配置為大多數(shù)應(yīng)用程序提供了良好的自動配置。 27. 開發(fā)Web應(yīng)用程序 Spring Boot非常適合web應(yīng)用程序開發(fā),通過使用嵌入式Tomcat、Jetty、Undertow或Netty,你可以創(chuàng)建一個自包含的HTTP服務(wù)器。大多...
摘要:當(dāng)面講給你聽講堂地址,或許是最實(shí)用的教程,新課促銷中,只要你敢來,保你收貨滿滿。優(yōu)惠報(bào)名全程擼碼快速入門教程全原價(jià),優(yōu)惠價(jià)全程擼碼進(jìn)階全原價(jià),優(yōu)惠價(jià) 回顧 Spring Boot - 初識 Hello World Spring Boot - Servlet、過濾器、監(jiān)聽器、攔截器 Spring Boot - 靜態(tài)資源處理、啟動加載、日志處理 Spring Boot - 部署Deplo...
摘要:觸發(fā)器文件可以手動更新,也可以使用插件進(jìn)行更新。例如,要配置重新啟動以始終使用觸發(fā)器文件,你需要添加以下屬性遠(yuǎn)程應(yīng)用程序開發(fā)工具并不局限于本地開發(fā),在遠(yuǎn)程運(yùn)行應(yīng)用程序時,還可以使用幾個特性。 20. 開發(fā)者工具 Spring Boot包括一組額外的工具,這些工具可以使應(yīng)用程序開發(fā)體驗(yàn)變得更加愉快,spring-boot-devtools模塊可以包含在任何項(xiàng)目中,以提供額外的develo...
閱讀 1944·2021-10-12 10:12
閱讀 3072·2019-08-30 15:44
閱讀 843·2019-08-30 15:43
閱讀 2994·2019-08-30 14:02
閱讀 2076·2019-08-30 12:54
閱讀 3497·2019-08-26 17:05
閱讀 1980·2019-08-26 13:34
閱讀 1051·2019-08-26 11:54