SpringBoot之yaml語法及靜態資源訪問

配置文件-yaml

在spring Boot開發中推薦使用yaml來做爲配置文件。html

基本語法:

  • key: value;kv之間有空格java

  • 大小寫敏感web

  • 使用縮進表示層級關係spring

  • 縮進不容許使用tab,只容許空格數組

  • 縮進的空格數不重要,只要相同層級的元素左對齊便可瀏覽器

  • '#'表示註釋緩存

  • 字符串無需加引號,若是要加,''與""表示字符串內容 會被 轉義/不轉義mvc

數據類型:

可使用的數據類型有date\boolean\string\number\nullapp

  1. 單個字面量:maven

    k: v   #k:空格v
  2. 對象,鍵值對的集合,包括:map、hash、set、object

    • 普通寫法:

      k:
       k1: v1
       k2: v2
       k3: v3
    • 行內寫法

      k: {k1: v1,k2: v2,k3: v3}
  3. 數組:一組按次序排列的值。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;
    }
}

結果如圖所示:

image-20210728203700819

Web開發之簡單功能分析

靜態資源的訪問問題

只有靜態資源放在如下的文件目錄中才能夠:

/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文件夾下面的圖片相同:

image-20210728204217924

開啓主程序測試結果以下:

image-20210728204412526

當咱們隨便請求一個不存在的圖片,會返回給咱們404.

從上面能夠看出來,請求進來,先去找Controller看能不能處理。不能處理的全部請求又都交給靜態資源處理器。靜態資源也找不到則響應404頁面

改變默認的靜態資源的路徑:

在application.yaml文件中:

spring:
  mvc:
    static-path-pattern: /res/**

這樣咱們訪問資源的時候必須啊要加res前綴.

image-20210728205013363

image-20210728205050657

可是在歡迎頁支持和自定義Favicon上須要關掉·tatic-path-pattern.若是開啓的話,index.html與favicon是不起效果的。

若是設置favicon設置的完後,不起做用,能夠禁用下瀏覽器緩存或者重啓下idea.

設置的方式(直接放到靜態資源文件夾下便可):

image-20210728205345207

直接訪問localhost:8080便可看見

image-20210728205605615

參考:

尚硅谷視頻

結束:

若是你看到這裏或者正好對你有所幫助,但願能點個關注或者推薦,感謝;

有錯誤的地方,歡迎在評論指出,做者看到會進行修改。

相關文章
相關標籤/搜索