日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

sprintboot-learn(一)

發布時間:2025/3/21 编程问答 18 豆豆
生活随笔 收集整理的這篇文章主要介紹了 sprintboot-learn(一) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

為什么80%的碼農都做不了架構師?>>> ??

@Controller和@RestController

示例工程springboot-learn

@Controller 注解使用下,返回的字符串默認是一張頁面的名字。

返回的是index.html頁面

@RestController 注解使用,默認是返回體。相當于加了@ResponseBody

返回的是字符串”index.html”

資源文件相關注解

示例工程springboot-learn和springboot-mybatis

Springboot會默認讀取application.properties配置文件。

@Configuration:標記某個實體類為資源文件,在啟動時實例化。

@PropertySource("classpath:pro.properties"):當標記在某個類上面的時候,如果該類在啟動時需要實例化,則通過該注解指定讀取資源文件pro.properties,類中使用@Value的方式注入。

@ConfigurationProperties(prefix = "myProps"):根據指定的前綴讀取文件信息并綁定到實體類上面。

其中,String類型的一定要使用setter來接受屬性值,集合不需要。該注解一般針對yml配置文件綁定屬性的時候用的較多。

對應ylm配置:

@ImportResource:引入xml配置文件(springMVC的<bean>方式配置)

如圖所示:改class有兩個注解,@Configuration標記改類為資源類,在啟動時實例化,實例化的時候由于用@ImportResource注解引入了資源文件,所以會解析該資源文件。如果不加@Configuration,則該類不會實例化,就不會引入資源文件。總的來說,改class并沒有用,寫這個類主要是為了引入一個資源文件,結構好看些。所以將該注解直接放在啟動類上面也可以。類似如圖:

application.properties

靜態資源文件夾

Server.port:配置服務器端口號,其它相關配置在類org.springframework.boot.autoconfigure.web.ServerProperties中可以找到。

spring.resources.staticLocations:配置資源文件的默認路徑,和以下配置方式是一樣的,/**暫時還沒沒搞懂啥情況,測試中無論咋配置結果都一樣,網上表示配置/**會覆蓋掉默認的/static等資源目錄,/path/**則不會覆蓋掉默認的,只是在默認的路徑中追加。但是實際測試并不是這樣。

spring.profiles.active:加載指定后綴的配置文件。

資源文件加載順序:

如果在程序運行的時候指定了其他資源文件,資源文件加載的順序:

@ProperSource指定 > 默認application.properties > spring.profiles.active指定

即:最先加載@ProperSource注解指定的,然后加載默認的,最后加載默認配置中使用spring.profiles.active指定的。

這個加載順序在是springbootce測試的時候有詳細說明,看“Junit單元測試.docx”,工程springbootJunit。

打包時拷貝靜態資源

種類

targetPath

會被打包的文件夾

Idea路徑

Jar路徑

資源訪問情況

第一種

只會打包springboot配置了的靜態資源文件夾,如resources/static,

位于target/classes路徑下

位于BOOT-INF/classes路徑下

Springboot自己靜態文件夾下的會被自動打包,Idea運行或者jar包運行都能訪問

第二種

static/

會將<directDictory>指定的文件夾下面的所有內容全部打包

target/classes/static

BOOT-INF/classes/static

都能訪問

第三種

BOOT-INF/classes/static/

會將<directDictory>指定的文件夾下面的所有內容全部打包

target/BOOT-INF/classes/static

BOOT-INF/classes/static

jar寶運行可以訪問,idea運行不能訪問

第四種

不配置<resources>

會將resources下所有文件及其文件夾打包到classes下

Target/classess

BOOT-INF/classes

如果resources下包含的文件夾是靜態文件夾,Idea運行或者jar包運行都能訪問

假定dist目錄中有index.html,第三種中idea運行時是不能訪問到index.html的,但是打成jar包運行就能訪問到。

原因:idea在運行的時候target下classes就相當于jar包中的BOOT-INF/classes(可以看第二種情況),但是在第三種情況中idea的路徑變成了target/BOOT-INF/classes而不是target/clasess,所以會出現訪問不到的情況。

*.*:當前目錄下所有文件,不包含文件夾

**/**:當前目錄下所有文件,包含文件夾

亂碼:

配置默認讀取properties文件的編碼格式

spring.messages.encoding=UTF-8

關于亂碼這個問題,在后邊測試的時候不起作用了,建議還是講中文轉成unicode編碼放配置里頭,就不會亂碼。

日志

logging.path:配置日志文件文件路徑

logging.file:配置日志文件的名字(必須包含路徑,否則路徑配置項無效)

如果logging.path=logs3,logging.file=myapp.log,只會在當前目錄下生成myapp.log

如果只配logging.file=lgs3/myapp.log,效果跟圖示效果一樣,會創建logs3文件夾并在其中生成日志文件myapp.log。

攔截器

示例工程:springboot-learn

繼承WebMvcConfigurerAdapter,需要加注解@Confifuration才會生效。

攔截規則中測試結果是/**和/*都是攔截所有,一般都用/**。

AddInterceptor方法的參數可以看到是HandlerInterceptor類型。

這里需要配置自定義的攔截器

MyIntercepter:

MyIntercepter2:

方法說明:

preHandle:在controller方法之前執行

postHandle:在controller方法之后執行

afterCompletion:只有在preHandle方法返回true的時候才執行

執行順序:

根據攔截器的配置順序執行。

?

圖中的true是preHandle的返回值,只有當返回值為true的時候才執行下一個攔截器,否則直接中斷。

afterCompletion是在preHandle和postHandle都執行完之后再執行,順序是反向的。

Controller:

訪問localhost:8080/test,localhost:8080/test1,看控制臺輸出:

over~~~

轉載于:https://my.oschina.net/wtkid/blog/2244948

總結

以上是生活随笔為你收集整理的sprintboot-learn(一)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。