SpringBoot中的yaml語(yǔ)法及靜態(tài)資源訪問(wèn)問(wèn)題
在spring Boot開(kāi)發(fā)中推薦使用yaml來(lái)作為配置文件。
基本語(yǔ)法: key: value;kv之間有空格 大小寫(xiě)敏感 使用縮進(jìn)表示層級(jí)關(guān)系 縮進(jìn)不允許使用tab,只允許空格 縮進(jìn)的空格數(shù)不重要,只要相同層級(jí)的元素左對(duì)齊即可 ’#’表示注釋 字符串無(wú)需加引號(hào),如果要加,’’與''表示字符串內(nèi)容 會(huì)被 轉(zhuǎn)義/不轉(zhuǎn)義數(shù)據(jù)類(lèi)型:可以使用的數(shù)據(jù)類(lèi)型有datebooleanstringnumbernull
單個(gè)字面量:
k: v #k:空格v
對(duì)象,鍵值對(duì)的集合,包括:map、hash、set、object
普通寫(xiě)法:
k: k1: v1 k2: v2 k3: v3
行內(nèi)寫(xiě)法
k: {k1: v1,k2: v2,k3: v3}
數(shù)組:一組按次序排列的值。array、list、queue
普通寫(xiě)法:
k: - v1 - v2 - v3
行內(nèi)寫(xiě)法
k: [v1,v2,v3]
編寫(xiě)之前,我需要配置yaml中的提示插件:
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-configuration-processor</artifactId> <optional>true</optional></dependency>
如果在打包的時(shí)候不需要打包該插件,可以在插件中設(shè)置如下:
<plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <configuration><excludes> <exclude><groupId>org.springframework.boot</groupId><artifactId>spring-boot-configuration-processor</artifactId> </exclude></excludes> </configuration></plugin>
安裝完成后,需要啟動(dòng)一下項(xiàng)目,讓他生效。
實(shí)例:
Person類(lèi):
@Data@Component@ConfigurationProperties(prefix = 'person')public class Person { private String userName; private Boolean boss; private Date birth; private Integer age; private Pet pet; private String[] interests; private List<String> animal; private Map<String, Object> score; private Set<Double> salarys; private Map<String, List<Pet>> allPets;}
Pet類(lèi):
@Datapublic class Pet { private String name; private Double weight;}
在recources資源目錄下創(chuàng)建application.yaml文件,使用yaml表示上述的屬性:
person: user-name: xbhog boss: false birth: 2021/7/27 age: 18 pet: {name: 阿毛,weight: 23} interests: [唱歌,跳舞,玩游戲] animal: - jerry - mario score: english: 30 math: 70 #第二種寫(xiě)法:score: {english: 30,math: 70} salarys: - 277 - 8999 - 10000 all-pets: #該allPet有兩個(gè)k(sick、health),每個(gè)key包含一個(gè)list sick: - {name: tom} - {name: jerry,weight:47} health: [{name: mario,weight: 47}]
創(chuàng)建一個(gè)controller來(lái)測(cè)試我們的配置文件有沒(méi)有生效:
因?yàn)槲覀冎耙褜erson中的屬性映射到了application.yaml文件中,并且把person加入到容器中。
@Component@ConfigurationProperties(prefix = 'person')
所以我們?cè)趍yconfig中做測(cè)試:
package com.xbhog.controller;import com.xbhog.popj.Car;import com.xbhog.popj.Person;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.context.annotation.Bean;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RestController;@RestControllerpublic class MyController { @Autowired //自動(dòng)配置,找到容器中的person Person person;@RequestMapping('/person') public Person person(){return person; }}
結(jié)果如圖所示:
只有靜態(tài)資源放在以下的文件目錄中才可以:
/static/、public/、 resources/ 、META-INF/resources
最后一個(gè)測(cè)試沒(méi)有成功,訪問(wèn)META-INF/resources/img.png返回404,如果有感興趣的小伙伴可以測(cè)試一下。
訪問(wèn)的方法是:當(dāng)前項(xiàng)目根路徑/ + 靜態(tài)資源名 (localhost:8080/xxx.img)
假如我們的請(qǐng)求路由跟圖片的名字重復(fù)了,spring boot是先請(qǐng)求哪個(gè)呢?
我們創(chuàng)建一個(gè)controller:
package com.xbhog.controller;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RestController;@RestControllerpublic class mycontro { @RequestMapping('/publicimg.png') public String demo(){return 'asss'; }}
讓它與public文件夾下面的圖片相同:
開(kāi)啟主程序測(cè)試結(jié)果如下:
當(dāng)我們隨便請(qǐng)求一個(gè)不存在的圖片,會(huì)返回給我們404.
從上面可以看出來(lái),請(qǐng)求進(jìn)來(lái),先去找Controller看能不能處理。不能處理的所有請(qǐng)求又都交給靜態(tài)資源處理器。靜態(tài)資源也找不到則響應(yīng)404頁(yè)面
改變默認(rèn)的靜態(tài)資源的路徑:在application.yaml文件中:
spring: mvc: static-path-pattern: /res/**
這樣我們?cè)L問(wèn)資源的時(shí)候必須啊要加res前綴.
但是在歡迎頁(yè)支持和自定義Favicon上需要關(guān)掉·tatic-path-pattern.如果開(kāi)啟的話,index.html與favicon是不起效果的。
如果設(shè)置favicon設(shè)置的完后,不起作用,可以禁用下瀏覽器緩存或者重啟下idea.
設(shè)置的方式(直接放到靜態(tài)資源文件夾下即可):
直接訪問(wèn)localhost:8080即可看見(jiàn)
到此這篇關(guān)于SpringBoot之yaml語(yǔ)法及靜態(tài)資源訪問(wèn)的文章就介紹到這了,更多相關(guān)SpringBoot之yaml語(yǔ)法及靜態(tài)資源訪問(wèn) 內(nèi)容請(qǐng)搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!
相關(guān)文章:
1. 解決Android Studio 格式化 Format代碼快捷鍵問(wèn)題2. php解決注冊(cè)并發(fā)問(wèn)題并提高QPS3. 完美解決vue 中多個(gè)echarts圖表自適應(yīng)的問(wèn)題4. 在Chrome DevTools中調(diào)試JavaScript的實(shí)現(xiàn)5. Springboot 全局日期格式化處理的實(shí)現(xiàn)6. SpringBoot+TestNG單元測(cè)試的實(shí)現(xiàn)7. Java使用Tesseract-Ocr識(shí)別數(shù)字8. vue實(shí)現(xiàn)web在線聊天功能9. JS原生2048小游戲源碼分享(全網(wǎng)最新)10. Python使用urlretrieve實(shí)現(xiàn)直接遠(yuǎn)程下載圖片的示例代碼
