溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Spring Boot全局配置和注解的操作方法有哪些

發(fā)布時(shí)間:2021-06-29 14:32:05 來(lái)源:億速云 閱讀:192 作者:chen 欄目:開(kāi)發(fā)技術(shù)

這篇文章主要講解了“Spring Boot全局配置和注解的操作方法有哪些”,文中的講解內(nèi)容簡(jiǎn)單清晰,易于學(xué)習(xí)與理解,下面請(qǐng)大家跟著小編的思路慢慢深入,一起來(lái)研究和學(xué)習(xí)“Spring Boot全局配置和注解的操作方法有哪些”吧!

目錄
  • 零、學(xué)習(xí)目標(biāo)

  •  一、全局配置文件概述

  • 二、Application.properties配置文件

    • 1、配置tomcat端口號(hào)和web虛擬路徑

    • 2、對(duì)象類型的配置與使用

    • 3、兩種屬性注解方式的對(duì)比

  • 三、Application.yaml配置文件

    • 四、兩種配置文件的比較

      • 五、課后作業(yè)

        零、學(xué)習(xí)目標(biāo)

        1、掌握application.properties配置文件

        2、掌握application.yaml配置文件

        3、掌握使用@ConfigurationProperties注入屬性

        4、掌握使用@Value注入屬性

         一、全局配置文件概述

        全局配置文件能夠?qū)σ恍┠J(rèn)配置值進(jìn)行修改。Spring Boot使用一個(gè)application.properties或者application.yaml的文件作為全局配置文件,該文件存放在src/main/resource目錄或者類路徑的/config,一般會(huì)選擇resource目錄。

        二、Application.properties配置文件

        (一)創(chuàng)建Spring Boot的Web項(xiàng)目PropertiesDemo

        利用Spring Initializr方式創(chuàng)建項(xiàng)目

        Spring Boot全局配置和注解的操作方法有哪些

        設(shè)置項(xiàng)目元數(shù)據(jù)

        Spring Boot全局配置和注解的操作方法有哪些

        添加測(cè)試和Web依賴

        Spring Boot全局配置和注解的操作方法有哪些

        設(shè)置項(xiàng)目名稱及保存位置

        Spring Boot全局配置和注解的操作方法有哪些

        單擊【Finish】按鈕,完成項(xiàng)目初始化工作

        Spring Boot全局配置和注解的操作方法有哪些

        設(shè)置項(xiàng)目編碼為utf8

        Spring Boot全局配置和注解的操作方法有哪些

        (二)在application.properties里添加相關(guān)配置 點(diǎn)開(kāi)resource目錄,查看應(yīng)用程序?qū)傩耘渲梦募?/p>

        Spring Boot全局配置和注解的操作方法有哪些

        1、配置tomcat端口號(hào)和web虛擬路徑

        #修改tomcat默認(rèn)端口號(hào)
        server.port=8888
        #修改web虛擬路徑
        server.servlet.context-path=/lzy

        Spring Boot全局配置和注解的操作方法有哪些

        更多配置屬性,詳見(jiàn)官網(wǎng)https://docs.spring.io/spring-boot/docs/current/reference/html/common-application-properties.html啟動(dòng)應(yīng)用,查看控制臺(tái)

        Spring Boot全局配置和注解的操作方法有哪些

        2、對(duì)象類型的配置與使用

        (1)創(chuàng)建Pet類

        在net.hw.lesson03里創(chuàng)建bean子包,在子包里創(chuàng)建Pet類

        Spring Boot全局配置和注解的操作方法有哪些

        package net.hw.lesson03.bean;
         
        /**
         * 功能:寵物實(shí)體類
         * 作者:華衛(wèi)
         * 日期:2021年04月28日
         */
        public class Pet {
            private String type; // 類型
            private String name; // 名字
         
            public String getType() {
                return type;
            }
         
            public void setType(String type) {
                this.type = type;
            }
         
            public String getName() {
                return name;
            }
         
            public void setName(String name) {
                this.name = name;
            }
         
            @Override
            public String toString() {
                return "Pet{" +
                        "type='" + type + '\'' +
                        ", name='" + name + '\'' +
                        '}';
            }
        }

        (2)創(chuàng)建Person類

        在net.hw.lesson03.bean包里創(chuàng)建Person類

        Spring Boot全局配置和注解的操作方法有哪些

        package net.hw.lesson03.bean;
         
        import java.util.List;
        import java.util.Map;
         
        /**
         * 功能:人類
         * 作者:華衛(wèi)
         * 日期:2021年04月28日
         */
        public class Person {
            private int id; // 編號(hào)
            private String name; // 姓名
            private List<String> hobby; // 愛(ài)好;
            private Map<String, String> family; // 家庭成員
            private Pet pet; // 寵物
         
            public int getId() {
                return id;
            }
         
            public void setId(int id) {
                this.id = id;
            }
         
            public String getName() {
                return name;
            }
         
            public void setName(String name) {
                this.name = name;
            }
         
            public List<String> getHobby() {
                return hobby;
            }
         
            public void setHobby(List<String> hobby) {
                this.hobby = hobby;
            }
         
            public Map<String, String> getFamily() {
                return family;
            }
         
            public void setFamily(Map<String, String> family) {
                this.family = family;
            }
         
            public Pet getPet() {
                return pet;
            }
         
            public void setPet(Pet pet) {
                this.pet = pet;
            }
         
            @Override
            public String toString() {
                return "Person{" +
                        "id=" + id +
                        ", name='" + name + '\'' +
                        ", hobby=" + hobby +
                        ", family=" + family +
                        ", pet=" + pet +
                        '}';
            }
        }

        (3)在application.properties里配置對(duì)象

        #配置對(duì)象
        person.id=1
        person.name=張三豐
        person.hobby=旅游,美食,音樂(lè)
        person.family.father=張?jiān)乒?
        person.family.mother=吳文燕
        person.family.grandpa=張宏宇
        person.famliy.grandma=唐雨欣
        person.family.son=張君寶
        person.family.daughter=張曉敏
        person.pet.type=泰迪犬
        person.pet.name=瑞瑞

        Spring Boot全局配置和注解的操作方法有哪些

        (4)給Person類添加注解

        添加注解@Component,交給Spring去管理

        Spring Boot全局配置和注解的操作方法有哪些

        添加注解@ConfigurationProperties(prefix = “person”)

        Spring Boot全局配置和注解的操作方法有哪些

        注意:采用@ConfigurationProperties注解方式,必須要有set方法,才會(huì)自動(dòng)為Person類所有屬性注入相應(yīng)的值,包括簡(jiǎn)單類型和復(fù)雜類型

        (5)給Pet類添加注解

        • 添加注解@Component,交給Spring去管理

        • 添加注解@ConfigurationProperties(prefix = “person.pet”) - 可以不用添加

        Spring Boot全局配置和注解的操作方法有哪些

        (6)從Spring容器里獲取Person類的實(shí)例并輸出

        實(shí)現(xiàn)接口ApplicationContextAware,實(shí)現(xiàn)其抽象方法setApplicationContext

        Spring Boot全局配置和注解的操作方法有哪些

        聲明ApplicationContext對(duì)象,并在setApplicationContext里初始化

        Spring Boot全局配置和注解的操作方法有哪些

        創(chuàng)建測(cè)試方法testPerson(),從Spring容器中獲取Person類的實(shí)例并輸出

        Spring Boot全局配置和注解的操作方法有哪些

        運(yùn)行測(cè)試方法testPerson(),查看結(jié)果

        Spring Boot全局配置和注解的操作方法有哪些

        (7)解決輸出結(jié)果的漢字亂碼問(wèn)題

        使用JDK工具native2ascii.exe將漢字處理成uncode編碼

        Spring Boot全局配置和注解的操作方法有哪些

        D:\IdeaProjects\PropertiesDemo>cd src/main/resources
         
        D:\IdeaProjects\PropertiesDemo\src\main\resources>native2ascii -encoding utf8 application.properties
        #\u4fee\u6539tomcat\u9ed8\u8ba4\u7aef\u53e3\u53f7
        server.port=8888
        #\u4fee\u6539web\u865a\u62df\u8def\u5f84
        server.servlet.context-path=/lzy
         
        #\u914d\u7f6e\u5bf9\u8c61
        person.id=1
        person.name=\u5f20\u4e09\u4e30
        person.hobby=\u65c5\u6e38,\u7f8e\u98df,\u97f3\u4e50
        person.family.father=\u5f20\u4e91\u5149
        person.family.mother=\u5434\u6587\u71d5
        person.family.grandpa=\u5f20\u5b8f\u5b87
        person.famliy.grandma=\u5510\u96e8\u6b23
        person.family.son=\u5f20\u541b\u5b9d
        person.family.daughter=\u5f20\u6653\u654f
        person.pet.type=\u6cf0\u8fea\u72ac
        person.pet.name=\u745e\u745e
         
        D:\IdeaProjects\PropertiesDemo\src\main\resources>

        修改application.properties文件,漢字采用unicode編碼形式

        Spring Boot全局配置和注解的操作方法有哪些

        運(yùn)行測(cè)試方法testPerson(),查看結(jié)果

        Spring Boot全局配置和注解的操作方法有哪些

        (8)從Spring容器里獲取Pet類的實(shí)例并輸出

        查看Pet類的注解,有配置屬性的注解@ConfigurationProperties(prefix = "person.pet")

        Spring Boot全局配置和注解的操作方法有哪些

        在測(cè)試類里添加測(cè)試方法testPet()

        Spring Boot全局配置和注解的操作方法有哪些

        運(yùn)行測(cè)試方法testPet(),查看結(jié)果

        Spring Boot全局配置和注解的操作方法有哪些

        注釋掉Pet類的配置屬性的注解@ConfigurationProperties(prefix = "person.pet")

        Spring Boot全局配置和注解的操作方法有哪些

        再次運(yùn)行測(cè)試方法testPet(),查看結(jié)果

        Spring Boot全局配置和注解的操作方法有哪些

        修改application.properties,配置寵物對(duì)象

        Spring Boot全局配置和注解的操作方法有哪些

        再次運(yùn)行測(cè)試方法testPet(),查看結(jié)果

        Spring Boot全局配置和注解的操作方法有哪些

        大家可以看到,寵物對(duì)象的屬性依然沒(méi)有被注入,下面我們換一種屬性注解的方式,采用@Value注解方式。

        給Pet類的屬性添加值注解@Value

        Spring Boot全局配置和注解的操作方法有哪些

        再次運(yùn)行測(cè)試方法testPet(),查看結(jié)果

        Spring Boot全局配置和注解的操作方法有哪些

        3、兩種屬性注解方式的對(duì)比

        •  采用@ConfigurationProperties注解方式,必須要有set方法,才會(huì)自動(dòng)為所注解的類的全部屬性注入相應(yīng)的值,包括簡(jiǎn)單類型和復(fù)雜類型(List、Map、Pet……)。

        • 采用@Value注解方式,優(yōu)點(diǎn)在于可以不要set方法,但是有兩點(diǎn)不足:其一、需要一個(gè)一個(gè)地注入,顯得麻煩;其二、對(duì)于復(fù)雜類型不能注入,比如Map、List、Pet等。

        三、Application.yaml配置文件

        1、備份application.properties文件 文件更名為application.back,即讓此文件不起作用

        Spring Boot全局配置和注解的操作方法有哪些

        2、在resoures目錄里創(chuàng)建application.yaml文件

        創(chuàng)建application.yaml文件

        Spring Boot全局配置和注解的操作方法有哪些

        配置服務(wù)器屬性

        Spring Boot全局配置和注解的操作方法有哪些

        配置person對(duì)象屬性

        Spring Boot全局配置和注解的操作方法有哪些

        配置pet對(duì)象屬性

        Spring Boot全局配置和注解的操作方法有哪些

        查看application.yaml文件內(nèi)容

        #配置服務(wù)器
        server:
          port: 8888
          servlet:
            context-path: /lzy
         
        #配置person對(duì)象
        person:
          id: 1
          name: 張三豐
          hobby:
            旅游
            美食
            音樂(lè)
          family: {
               father: 張?jiān)乒?
               mother: 吳文燕,
               grandpa: 張宏宇,
               grandma: 唐雨欣,
               son: 張君寶,
               daughter: 張曉敏
            }
          pet:
            type: 泰迪犬
            name: 瑞瑞
         
        #配置pet對(duì)象
        pet:
          type: 泰迪犬
          name: 瑞瑞

        3、運(yùn)行測(cè)試方法testPerson(),查看結(jié)果

        Spring Boot全局配置和注解的操作方法有哪些

        4、運(yùn)行測(cè)試方法testPet(),查看結(jié)果

        Spring Boot全局配置和注解的操作方法有哪些

        四、兩種配置文件的比較

        1、application.properties配置文件

        • 采用XML語(yǔ)法,鍵值對(duì):鍵=值,沒(méi)有層次結(jié)構(gòu)

        • 如果值里有漢字,必須得轉(zhuǎn)成unicode,否則會(huì)出現(xiàn)亂碼問(wèn)題

        2、application.yaml配置文件

        • 采用YAML語(yǔ)法,鍵值對(duì):鍵: 值(冒號(hào)與值之間有空格),具有層次結(jié)構(gòu)

        • 允許值里有漢字,不必轉(zhuǎn)成unicode,也不會(huì)出現(xiàn)亂碼問(wèn)題

        五、課后作業(yè)

        任務(wù):修改StudentInfo項(xiàng)目輸出學(xué)生信息

        Spring Boot全局配置和注解的操作方法有哪些

        創(chuàng)建學(xué)生實(shí)體類Student

        Spring Boot全局配置和注解的操作方法有哪些

        添加屬性

        private String id;
        private String name;
        private String gender;
        private int age;
        private String major;
        private String telephone;
        private String email;
        private String hobby;
        • 添加getter和setter

        • 添加toString()方法

        • 添加注解@Component

        • 添加注解@ConfigureProperties

        • 將application.properties更名為application.yaml

        Spring Boot全局配置和注解的操作方法有哪些

        配置student對(duì)象屬性

        Spring Boot全局配置和注解的操作方法有哪些

        • 修改控制器StudentInfoController,student()方法里返回student的值

        • 運(yùn)行啟動(dòng)類

        Spring Boot全局配置和注解的操作方法有哪些

        在瀏覽器里訪問(wèn)http://localhost:8080/student

        Spring Boot全局配置和注解的操作方法有哪些

        感謝各位的閱讀,以上就是“Spring Boot全局配置和注解的操作方法有哪些”的內(nèi)容了,經(jīng)過(guò)本文的學(xué)習(xí)后,相信大家對(duì)Spring Boot全局配置和注解的操作方法有哪些這一問(wèn)題有了更深刻的體會(huì),具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是億速云,小編將為大家推送更多相關(guān)知識(shí)點(diǎn)的文章,歡迎關(guān)注!

        向AI問(wèn)一下細(xì)節(jié)

        免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

        AI