首頁 > Java > java教程 > Spring Boot設定檔的作用與細則是什麼

Spring Boot設定檔的作用與細則是什麼

WBOY
發布: 2023-05-12 22:13:04
轉載
1625 人瀏覽過

    一.設定檔的作用

    設定檔是非常重要的,整個專案中所有的重要資料都是在設定檔中進行設定的例如:

    • 資料庫的連接資訊(使用者名稱和密碼的設定);

    • 專案啟動的連接埠;

    • #第三方系統所呼叫的秘鑰資訊;

    • 可以發現和定位問題的普通日誌和例外日誌等(日誌的等級和持久化);

    如果沒有設定檔的話,這些資訊就無法進行配置了,資料庫無法連接,日誌無法查看等這些問題都是對於Spring Boot專案非常關鍵的,因此設定檔是特別重要的!

    二.設定檔的格式

    設定檔的分類一般是:

    • 系統的設定檔(系統定義好的),如連接字串,日誌的相關設定;

    • 使用者自己定義的;

    #而Spring Boot的設定檔主要有兩種格式:

    • .properties

    • .yml

    Spring Boot設定檔的作用與細則是什麼

    就是這樣的兩種格式,而且這裡也一定要這麼寫,不然也是會報錯的(約定大於配置),在這兩個裡面都是可以進行相關配置文件的設定的,兩種格式只是不同時間的產物罷了,另外兩種格式的寫法也是不同的,這個下面會有相關的介紹,而且這兩種格式也是可以並存的,如果兩個都配置了,這裡的配置會採用properties裡面的配置,而忽略yml裡面的配置,因此不建議同時使用兩種格式再同一個項目!

    三.properties設定檔的說明

    properties設定檔是更早期的設定檔格式,也是Spring Boot專案預設的設定文件,以下就具體介紹一下properties設定檔:

    1.properties基本語法

    在properties裡面是以鍵值對為主的(key=value),類似

    Spring Boot設定檔的作用與細則是什麼

    ##這樣的格式(中間不要寫空格,也不要寫多餘的空格)

    如果是自訂的設定檔的話,也是key=value的形式,而這是需要自己寫的,如果要讀取這個檔案也只能使用自己定義的key值來得到value值!

    2.讀取設定檔

    同樣也是使用註解就可以解決這個問題,這裡使用@Value註解以及${}的格式就可以進行讀取了:

    @Controller
    public class Test {
        @Value("${server.port}") //读取配置项
        private  String port;
        @ResponseBody  //返回一个非静态页面的数据
        @RequestMapping("/func")  //设置路由地址
        public String  func(){
            return "port: " + port;
        }
    }
    登入後複製

    接著透過頁面搜尋http://localhost:8080/func就看有觀察到讀取的連接埠號碼了:

    Spring Boot設定檔的作用與細則是什麼##而使用@Value是只能讀取一個設定檔的話,如果想讀取多個的話,需要多寫幾個@Value標籤就可以了

    #3.properties的缺點

    在properties裡面是採用key =value的形式,而如果是同一key下的value,就需要把此key值重複來寫,這就顯得非常冗餘了

    Spring Boot設定檔的作用與細則是什麼而想要解決這個問題就需要使用yml配置文件了

    四.yml配置文件的說明

    yml是另一種格式的配置文件,yml 是⼀個可讀性⾼,易於理解, ⽤來表達資料序列化的格式,yml的語法和高階語言非常類似,而yml最大的優勢是可以跨語言,像python,golang都可以使用yml作為配置⽂件。以下具體介紹yml設定檔:

    1.yml基本語法

    在yml裡面的基本語法是:key: value,注意key和value之間需要英文冒號加空格,其中的空格也是不可省略的,類似

    Spring Boot設定檔的作用與細則是什麼這樣的語法再寫上面的連接資料庫配置的話,就方便很多了:

    Spring Boot設定檔的作用與細則是什麼補充:yml中關於單、雙引號的問題:yml中如果使用了雙引號就會按照(原)語義執行,如果不加,或者加了單引號,那麼預設就會將字串中的特殊字元進行轉義,例如\n -> \n(轉義)處理。

    2.讀取設定檔

    yml設定檔的讀取方式也是和properties一樣的,都是用@Value註解加${}的格式,這裡就不示範了,下面就來看看yml不一樣的地方吧!

    3.配置对象

    在yml里面还是可以配置对象的:

    Spring Boot設定檔的作用與細則是什麼

    另外也可以使用行内写法:

    Spring Boot設定檔的作用與細則是什麼

    而想要读取到这个对象的话就不能再使用@Value注解了,这里需要借助@ConfigurationProperties来读取:

    import lombok.Data;
    import org.springframework.boot.context.properties.ConfigurationProperties;
    import org.springframework.stereotype.Component;
    @Data
    @ConfigurationProperties(prefix = "student") //读取配置文件的对象
    @Component
    public class Student {
        private int id;
        private String name;
        private int age;
    }
    登入後複製

    然后读取对象,就可以直接进行注入了:

    @Controller
    public class Test {
        @Autowired
        private Student student;
        @ResponseBody
        @RequestMapping("/getstudent")
        public String getStudent(){
            return "student: " + student;
        }
    }
    登入後複製

    然后通过浏览器搜索http://localhost:8080/getstudent就可以得到对象内容了:

    Spring Boot設定檔的作用與細則是什麼

    4.配置集合

    在yml里面也是可以配置集合的:

    Spring Boot設定檔的作用與細則是什麼

    同样行内写法也是可以的:

    Spring Boot設定檔的作用與細則是什麼

    而要获取到集合的话,和获取对象是差不多的,也是通过@ConfigurationProperties来获取:

    import lombok.Data;
    import org.springframework.boot.context.properties.ConfigurationProperties;
    import org.springframework.stereotype.Component;
    import java.util.List;
    @Data
    @ConfigurationProperties(prefix = "dbtypes")
    @Component
    public class ListConfig {
        private List<String> name;
    }
    登入後複製

    读取集合:

    @Controller
    public class Test {
        @Autowired
        private ListConfig listConfig;
        @ResponseBody
        @RequestMapping("/getlist")
        public String getList(){
            return "name:" + listConfig.getName();
        }
    }
    登入後複製

    然后通过浏览器搜索http://localhost:8080/getlist就可以得到对象内容了:

    Spring Boot設定檔的作用與細則是什麼

    五.properties和yml的区别

    • properties是以key=value的形式配置的键值对类型配置文件,而yml是以key: value的形式配置的键值对类型配置文件;

    • properties是早期且系统默认的配置文件格式,但配置存在一定的冗余数据,而yml可以更好的解决数据冗余问题;

    • yml通用性更好,支持多语言;

    • yml支持更多的数据类型;

    以上是Spring Boot設定檔的作用與細則是什麼的詳細內容。更多資訊請關注PHP中文網其他相關文章!

    相關標籤:
    來源:yisu.com
    本網站聲明
    本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
    熱門教學
    更多>
    最新下載
    更多>
    網站特效
    網站源碼
    網站素材
    前端模板