在spring Boot開發中推薦使用yaml來做爲配置文件。html
key: value;kv之間有空格java
大小寫敏感web
使用縮進表示層級關係spring
縮進不容許使用tab,只容許空格數組
縮進的空格數不重要,只要相同層級的元素左對齊便可瀏覽器
'#'表示註釋緩存
字符串無需加引號,若是要加,''與""表示字符串內容 會被 轉義/不轉義mvc
可使用的數據類型有date\boolean\string\number\nullapp
單個字面量:maven
k: v #k:空格v
對象,鍵值對的集合,包括:map、hash、set、object
普通寫法:
k: k1: v1 k2: v2 k3: v3
行內寫法
k: {k1: v1,k2: v2,k3: v3}
數組:一組按次序排列的值。array、list、queue
普通寫法:
k: - v1 - v2 - v3
行內寫法
k: [v1,v2,v3]
編寫以前,我須要配置yaml中的提示插件:
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-configuration-processor</artifactId> <optional>true</optional> </dependency>
若是在打包的時候不須要打包該插件,能夠在插件中設置以下:
<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資源目錄下建立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}]
建立一個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; } }
結果如圖所示:
只有靜態資源放在如下的文件目錄中才能夠:
/static/、public/、 resources/ 、META-INF/resources
最後一個測試沒有成功,訪問META-INF/resources/img.png返回404,若是有感興趣的小夥伴能夠測試一下。
訪問的方法是:當前項目根路徑/ + 靜態資源名 (localhost:8080/xxx.img)
假如咱們的請求路由跟圖片的名字重複了,spring boot是先請求哪一個呢?
咱們建立一個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文件夾下面的圖片相同:
開啓主程序測試結果以下:
當咱們隨便請求一個不存在的圖片,會返回給咱們404.
從上面能夠看出來,請求進來,先去找Controller看能不能處理。不能處理的全部請求又都交給靜態資源處理器。靜態資源也找不到則響應404頁面
在application.yaml文件中:
spring: mvc: static-path-pattern: /res/**
這樣咱們訪問資源的時候必須啊要加res前綴.
可是在歡迎頁支持和自定義Favicon上須要關掉·tatic-path-pattern
.若是開啓的話,index.html與favicon是不起效果的。
若是設置favicon設置的完後,不起做用,能夠禁用下瀏覽器緩存或者重啓下idea.
設置的方式(直接放到靜態資源文件夾下便可):
直接訪問localhost:8080便可看見
若是你看到這裏或者正好對你有所幫助,但願能點個關注或者推薦,感謝;
有錯誤的地方,歡迎在評論指出,做者看到會進行修改。