SpringBoot中的yaml語法及靜態(tài)資源訪問問題
配置文件-yaml
在spring Boot開發(fā)中推薦使用yaml來作為配置文件。
基本語法:
- key: value;kv之間有空格
- 大小寫敏感
- 使用縮進表示層級關(guān)系
- 縮進不允許使用tab,只允許空格
- 縮進的空格數(shù)不重要,只要相同層級的元素左對齊即可
- '#'表示注釋
- 字符串無需加引號,如果要加,''與""表示字符串內(nèi)容 會被 轉(zhuǎn)義/不轉(zhuǎn)義
數(shù)據(jù)類型:
可以使用的數(shù)據(jù)類型有date\boolean\string\number\null
單個字面量:
k: v #k:空格v
對象,鍵值對的集合,包括:map、hash、set、object
普通寫法:
k:
k1: v1
k2: v2
k3: v3
行內(nèi)寫法
k: {k1: v1,k2: v2,k3: v3}
數(shù)組:一組按次序排列的值。array、list、queue
普通寫法:
k:
- v1
- v2
- v3
行內(nèi)寫法
k: [v1,v2,v3]
編寫之前,我需要配置yaml中的提示插件:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>
如果在打包的時候不需要打包該插件,可以在插件中設(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>
安裝完成后,需要啟動一下項目,讓他生效。
實例:
Person類:
@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類:
@Data
public 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
#第二種寫法:score: {english: 30,math: 70}
salarys:
- 277
- 8999
- 10000
all-pets: #該allPet有兩個k(sick、health),每個key包含一個list
sick:
- {name: tom}
- {name: jerry,weight:47}
health: [{name: mario,weight: 47}]
創(chuàng)建一個controller來測試我們的配置文件有沒有生效:
因為我們之前已將將person中的屬性映射到了application.yaml文件中,并且把person加入到容器中。
@Component @ConfigurationProperties(prefix = "person")
所以我們在myconfig中做測試:
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;
@RestController
public class MyController {
@Autowired //自動配置,找到容器中的person
Person person;
@RequestMapping("/person")
public Person person(){
return person;
}
}
結(jié)果如圖所示:

Web開發(fā)之簡單功能分析
靜態(tài)資源的訪問問題
只有靜態(tài)資源放在以下的文件目錄中才可以:
/static/、public/、 resources/ 、META-INF/resources
最后一個測試沒有成功,訪問META-INF/resources/img.png返回404,如果有感興趣的小伙伴可以測試一下。
訪問的方法是:當前項目根路徑/ + 靜態(tài)資源名 (localhost:8080/xxx.img)
假如我們的請求路由跟圖片的名字重復(fù)了,spring boot是先請求哪個呢?
我們創(chuàng)建一個controller:
package com.xbhog.controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class mycontro {
@RequestMapping("/publicimg.png")
public String demo(){
return "asss";
}
}
讓它與public文件夾下面的圖片相同:

開啟主程序測試結(jié)果如下:

當我們隨便請求一個不存在的圖片,會返回給我們404.
從上面可以看出來,請求進來,先去找Controller看能不能處理。不能處理的所有請求又都交給靜態(tài)資源處理器。靜態(tài)資源也找不到則響應(yīng)404頁面
改變默認的靜態(tài)資源的路徑:
在application.yaml文件中:
spring:
mvc:
static-path-pattern: /res/**
這樣我們訪問資源的時候必須啊要加res前綴.


但是在歡迎頁支持和自定義Favicon上需要關(guān)掉·tatic-path-pattern.如果開啟的話,index.html與favicon是不起效果的。
如果設(shè)置favicon設(shè)置的完后,不起作用,可以禁用下瀏覽器緩存或者重啟下idea.
設(shè)置的方式(直接放到靜態(tài)資源文件夾下即可):

直接訪問localhost:8080即可看見

到此這篇關(guān)于SpringBoot之yaml語法及靜態(tài)資源訪問的文章就介紹到這了,更多相關(guān)SpringBoot之yaml語法及靜態(tài)資源訪問 內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
.properties文件讀取及占位符${...}替換源碼解析
本篇文章主要介紹了.properties文件讀取及占位符${...}替換源碼解析的相關(guān)知識,具有很好的參考價值。下面跟著小編一起來看下吧2017-05-05
java截取字符串中的指定字符的兩種方法(以base64圖片為例)
本文介紹了使用Java截取字符串中指定字符的方法,通過substring索引和正則實現(xiàn),文章詳細介紹了實現(xiàn)步驟和示例代碼,對于想要了解如何使用Java截取字符串指定字符的讀者具有一定的參考價值2023-08-08
java input 調(diào)用手機相機和本地照片上傳圖片到服務(wù)器然后壓縮的方法
今天小編就為大家分享一篇java input 實現(xiàn)調(diào)用手機相機和本地照片上傳圖片到服務(wù)器然后壓縮的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-08-08
Java實現(xiàn)統(tǒng)計字符串出現(xiàn)的次數(shù)
這篇文章主要為大家詳細介紹了Java實現(xiàn)統(tǒng)計字符串出現(xiàn)的次數(shù),文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2021-10-10
Windows安裝Maven并配置環(huán)境的詳細步驟
Maven是一個非常流行的構(gòu)建和項目管理工具,用于Java開發(fā),它提供了一個強大的依賴管理系統(tǒng)和一系列標準化的構(gòu)建生命周期,本文將指導(dǎo)您如何在Windows操作系統(tǒng)上安裝和配置Maven,需要的朋友可以參考下2023-05-05
Java使用Hutool實現(xiàn)AES、DES加密解密的方法
本篇文章主要介紹了Java使用Hutool實現(xiàn)AES、DES加密解密的方法,具有一定的參考價值,有興趣的可以了解一下2017-08-08

