日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

SpringBoot从介绍到各个框架的整合

發布時間:2025/3/18 javascript 18 豆豆
生活随笔 收集整理的這篇文章主要介紹了 SpringBoot从介绍到各个框架的整合 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1.背景:以前假如想創建一個Spring應用, 比如Spring、SpringMVC、Mybatis三大框架的整合, 我們需要一堆繁瑣的步驟:maven導一堆依賴-->寫一堆配置文件-->測試-->打成war包部署到Servlet容器上,可以說是相當繁瑣。SpringBoot就是來簡化這些步驟的。

2.SpringBoot的作用:幫助我們很快的創建一個產品級別的Spring應用,簡化J2EE開發。SpringBoot會自動幫我們配置好Spring

的相關配置,因此用戶可以無需去清楚Spring的配置,就可以從SpringBoot這個微小的入口打開J2EE的大門。

3.歸納一下SpringBoot的優點:

  (1)快速創建獨立運行的Spring項目以及與主流框架集成

  (2)使用嵌入式的Servlet容器,應用無需打成WAR包跑在servlet容器上。打成Jar包,然后java -jar即可運行

  (3)starters自動依賴與版本控制

  (4)大量的自動配置,簡化開發,也可以修改默認值

  (5)無需配置XML,無代碼生成,開箱即用

  (6)準生產環境的運行時應用監控

  (7)與云計算的天然集成

4,SpringBoot的缺點:入門容易,精通難。之所以那么說,是因為SpringBoot是基于Spring的一個再封裝,如果你對Spring框架一無所知,那就做不到精通。

5.HelloWord(基于maven創建)

  (1)創建一個maven工程。

  (2)導入SpringBoot的依賴

  (3)建一個類,在類上標注@SpringBootApplication,來告訴SpringBoot這是一個主程序類,說明這是一個SpringBoot應用

  (4)再主程序類里添加main方法(idea快捷鍵:psvm),然后在main方法里添加SpringApplication.run(主程序類.class,args);

  (5)編寫相關的Controller、Service等。

  (6)運行測試:主程序里直接運行main方法即可開啟應用。tomcat8080端口(內置了tomcat)。

  (7)部署:導入SpingBoot的Maven插件

    這個插件的作用就是將應用打包成可執行的jar包。

  (8)運行:java -jar命令即可啟動。即使目標服務器里沒有裝tomcat也沒問題。

5.Spring-Boot-starter(SpringBoot場景啟動器):每個功能場景都有自己的starter,每個starter里面都導入了自己需要的依賴,要用什么功能就導入什么場景啟動器

6.需要將所有組件都放到主配置類(@SpringBootApplication標注的類)所在包及下面所有子包里面,不然不會被掃描到Spring容器里。所有自動配置的信息(比如SpringMVC等)都配置在@SpringBootApplication注解里。

7.使用Spring Initializer快速創建SpringBoot應用:

  (1)

  

  (2)

  

  (3)選擇模塊

  

  創建完成之后主程序會自動生成好, 我們只需要寫我們自己的邏輯。

  resources文件目錄結構:static:保存所有的靜態資源(js、css、images)

            ? ? ?templates:保存所有的模板頁面,SpringBoot默認jar包嵌入式的Tomcat,默認不知處jsp頁面)

                  ? 可以使用模板引擎代替。

              application.properties:SpringBoot的配置文件。可以在這里修改默認配置。e.g 默認tomcat不想用

                      ? ? ?8080端口了,可以在里面寫上sever.port=8081

8.SpringBoot的配置

  有兩種全局配置文件,分別是application.properties和application.yml??? 文件名固定不可變.

  配置文件的作用: 修改SpringBoot的自動配置默認值.

  yml和xml的對比:

         yml:

         xml:

         很明顯, yml文檔要比xml文檔來的更加簡潔.

  8.1yml基本語法

    普通的值?????? K:(空格)V ?? 注意:這里的空格必須有. 只要是左對齊的一列數據, 都是同一層級的. 屬性和值是大小寫敏感的.

          字符串默認不用加單引號或者雙引號 ?? ""雙引號不會轉義里面的特殊字符, 特殊字符會作為本身想表示的意思 ? 例: "zhangsan /n lisi", 輸出: zhangsan 換行 lisi

                           ''單引號會轉義特殊字符,特殊字符只是一個普通的字符串輸出.例: "zhangsan /n lisi", 輸出: zhangsan /n lisi

    對象 ? ? ? ? ? ? friends:

             lastName: zhangsan

             age: 20

    對象(行內寫法) ? ?? friends: {lastName: zhangsan,age: 20}

    數組 ? ? ? ? ?? 用-(空格)表示數組中的一個元素 ? ? ? ? ? 例:pets:

                              - cat

                              -dog

    數組(行內寫法) ? ? pets: [cat,dog]

?

    8.2 如何在yml里面配置屬性, 然后注入到bean中.

      

public class Person {private String lastName;private Integer age;private Boolean boss;private Date birth;private Map<String,Object> maps;private List<Object> list;private Dog dog;

?

      ? 定義一個Person類.

      

      ? yml配置. ??

      接下來要怎樣把yml文件里面的配置信息映射到這個bean中呢?

      用@ConfigurationProperties(prefix = "person")? 注解, 這個注解的意義是告訴SpringBoot將本類中的所有屬性和配置文件中的相關屬性進行綁定

      

@ConfigurationProperties(prefix = "person") public class Person {private String lastName;private Integer age;private Boolean boss;private Date birth;private Map<String,Object> maps;private List<Object> list;private Dog dog;

?

          此時IDEA會報一個提示,? 沒有在類路徑下找到SpringBoot的配置注釋處理器

          只需要點擊Open Documentation, 到達SpringBoot官網, 把依賴添加過來即可. 加入這個插件以后還有個好處就是在yml或者properties里配置信息的時候會有提示

          

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-configuration-processor</artifactId><optional>true</optional> </dependency>

?

          注意:這個bean必須要是Spring容器中的組件, 也就是必須加上@Component注解. 此時已經設置完畢, 可以開始進行測試.

          到測試包下可以看到一個Test類, 這是SpringBoot的單元測試

          

          注入Person,然后在控制臺輸出一下即可看到效果.? 由此可以得出, 把一些初始化配置配置在yml里面, 修改相當方便.

          

          當然, 我們的配置信息也可以放在application,properties當中, 語法與yml文件略有不同.

          

person.last-name=張三 person.age=50 person.birth=1992/06/19 person.boss=true person.dog.name=555 person.dog.age=5 person.maps.k1=v1 person.maps..k2=v2 person.list=1,2,3

?

          插入之后執行測試, 發現有中文亂碼情況. 原因: idea默認是utf-8, 而application.properties默認的不是utf-8.因此我們輸入的"張三"并不是utf-8格式

          

          解決方法:file->setting->搜索FileEncoding

          

          這樣在輸入時就是utf-8格式, 然后幫我們自動轉化為ascii格式讓程序進行獲取.

?

        ????? 那么問題來了, application.properties和application.yml都可以進行配置, 那么誰的優先級更高呢? 博主測試了一下, 是application,properties更高!? yml與properties相比較, 看上去更清晰, 更有層次感些.
           

          用@ConfigurationProperties在注入時, 也可以進行數據驗證, 在@ConfigurationProperties下面加上@Validated, 表示注入需要驗證.接下來就可以在各個屬性上添加不一樣的格式(比如@Email)

 

1 @Component 2 @ConfigurationProperties(prefix = "person") 3 @Validated 4 public class Person { 5 @Email 6 private String lastName;//此時在配置文件中lastName若不是email格式,則會報錯

          從配置文件中注入屬性值有兩種方法, 一種是在類上添加@ConfigulationProperties(支持數據校驗), 一種是在屬性上添加@Value(不支持數據校驗)

          何時用何種情況:如果說我們只是在某個業務邏輯中需要獲取一下配置文件中的某項值, 使用@Value

                  如果說我們專門編寫了一個JavaBean來和配置文件進行映射, 我們就直接使用@ConfigulationProperties

?

      那么我們所有配置Javabean的信息都配到application.yml(全局配置文件)或者application.properties(全局配置文件)真的好嗎?當然不好, 這樣配置文件也太大了. 我們一般把和SpringBoot無關的配置信息單獨放到別的配置文件中去, 然后通過@PropertySource(value="classpath:***")來注入.

1 @Component 2 @PropertySource(value = "classpath:person.properties")//person.properties放在resources文件夾下 3 @ConfigurationProperties(prefix = "person")//這個注解不能刪除, 不然無法注入, 默認為從全局配置文件中獲取配置信息, 加了@PropertiesSource之后就從這個指定的配置文件中獲取配置信息 4 public class Person { 5 private String lastName; 6 private Integer age; 7 private Boolean boss; 8 private Date birth; 9 10 private Map<String,Object> maps; 11 private List<Object> list; 12 private Dog dog;

      在配置文件里我們還可以使用占位符${屬性名},占位符里也可以添加SpringBoot提供的一些功能, 比如隨機數/uuid等

1 dog: 2 name: 歡歡${person.birth} 3 age: 1 4 last-name: 一頭生猛的程序猿${random.uuid}

?

9.Profile

  為了方便我們的多環境配置, 比如測試環境/生產環境, 他們的配置信息肯定是不同的, 如何快速的切換, 就要用到我們的Profile

  多profile文件模式: 我們在主配置文件編寫的時候, 文件名可以是:application-{profile}.Properties/yml

          例: 現在有Application.properties ?? 設置端口8080

              ? Application-{test}.properties? 設置端口8081?

              ? Application-{product}.properties? 設置端口8082

            測試跑起來之后, 開啟的端口為8080, 采用了默認設置

            此時, 在Application.properties中添加一行 spring.profiles.active=test ? ? ?? //激活test

            執行測試發現開啟的端口是8081.? 由此得出, 我們可以在默認全局配置文件Application.Properties中進行靈活的切換, 缺點就是需要新建很多個profile文件(用yml支持多文檔塊方式即可彌補這個缺點)

  yml支持多文檔塊方式:以yml作為主配置文件, yml內部可以分為多個文檔塊, 通過"---"進行劃分,這樣就避免了多個profile文件的創建
             

10.配置文件的加載位置:

  SpringBoot啟動會掃描以下位置的application.yml或application,properties作為Spring boot默認配置文件

  file:./config/

  

?

  file:./

  

?

  classpath:/config/

  

?

  classpath:/

  

  優先級從上到下是從高到低, 相同的屬性配置, 低優先級的會被高優先級的覆蓋 ; 一些低優先級包含,高優先級不包含的則以低優先級的為準. 也就是互補配置!? 默認打包只會打包類路徑下的, 工程路徑下的不打包.

  我們還可以通過spring.config.location來改變默認的配置文件位置(應用場景: 在運維過程中,當項目已經打包, 但是想修改一些配置的時候),注意:這里也是互補配置

  

?

?

  

  

?

?

?

?

?

?

?

          

          

?

          

?

?

?

?

?

      

      

      

      

      

      

?

?

      

?

    

?

  

  

?

?

?

?

?

?

?

?

?

轉載于:https://www.cnblogs.com/shenhanboBlog/p/9946946.html

總結

以上是生活随笔為你收集整理的SpringBoot从介绍到各个框架的整合的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 欧美亚洲一区 | 999在线观看视频 | 日韩视频一区二区三区 | 俄罗斯porn| 成人高潮片免费视频 | 美国av一区二区 | 亚洲区一区二区 | 国产午夜在线播放 | 亚洲精品视频国产 | 国产91精品久久久久 | av免费亚洲 | 成人精品久久久午夜福利 | www.久久久久久久 | 亚洲av成人无码久久精品 | 97人人澡 | 三级自拍 | 禁果av一区二区三区 | 日本美女视频一区 | 国产a∨精品一区二区三区仙踪林 | 日韩美女久久 | 成人91免费视频 | 色婷婷av一区二区三区麻豆综合 | 在线欧美 | 11一12免费毛片 | 久在线 | 免费观看黄色网页 | 97干干| 女人的天堂网站 | 久久丝袜视频 | 成人福利网址 | 国产无精乱码一区二区三区 | 久久99日韩| 色婷婷777 | 国产精品操 | 青青草国产在线视频 | 亚洲av无码一区二区三区在线播放 | 二级黄色大片 | 日产精品一区二区 | 日本女优黄色 | 亚洲免费一区 | 免费国产黄色片 | 精品一区二区国产 | 国产不卡视频在线观看 | 亚洲の无码国产の无码步美 | 国产精品亚洲欧美在线播放 | 亚洲最大成人av | 亚洲天堂午夜 | 国产亚洲欧美日韩精品 | 中文字幕乱码亚洲精品一区 | 婷婷资源网| 国产伦理一区二区 | 激情宗合 | 男人添女人下部高潮视频 | 亚洲AV成人午夜无码精品久久 | 中日韩中文字幕 | 免费网站在线观看黄色 | 日韩视频在线免费播放 | 91新视频 | 深夜老司机福利 | 黑白配av | 全黄性性激高免费视频 | 极品五月天 | 国产精品无码网站 | 欧美在线日韩 | 国产情侣激情 | 2018狠狠干| 少妇性bbb搡bbb爽爽爽欧美 | 天堂网色 | 视频在线一区二区 | 光溜溜视频素材大全美女 | 色a在线| 爱情岛亚洲首页论坛小巨 | 色呦呦在线视频 | 综合久久精品 | 亚洲av人人澡人人爽人人夜夜 | 欧美超碰在线观看 | 免费观看污网站 | av无毛| 欧美人与物videos另类 | 少妇aa| 久久久6| 国产精品久久久久久久久久久久久久 | 一区二区三区国产在线观看 | 好av在线| 欧美一区二区三区 | 四川黄色一级片 | 西西444www大胆无视频 | 无码精品久久久久久久 | 刘亦菲毛片 | 秋霞网一区二区 | 日韩一级不卡 | 亚洲第一二区 | 嫩草嫩草嫩草嫩草嫩草 | 永久免费av网站 | 一区二区三区久久久 | 少妇野外性xx老女人野外性xx | 精品人妻久久久久一区二区三区 | 伊人久久成人网 | eeuss国产一区二区三区 |