springboot:進入大廠前需要領悟的寶典黑忱,你明白嗎甫煞?

在前面的文章過Damon說過SSM是目前較為流行的開發(fā)模板冠绢,但其實在許多大公司的開發(fā)中弟胀,主流的Springboot才是主流。這些公司之所以選擇使用springboot的原因萧朝,不單單是因為優(yōu)點是對新手無需任何門檻夏哭,只要懂Maven會看文檔就能亦步亦趨的開始一個新項目方庭。
并且對于一些高手來說,改配置也是分分鐘的事头朱。雖然Spring Boot的auto configuration loading真的非常繞项钮,但熟悉spring的人還是蠻容易找到問題所在的。另外fat jar的打包方式讓部署真的變得很美麗署隘。devtools更是讓臭名昭著的改代碼重啟成為了半個歷史亚隙。所以今天Damon就跟大家說說springboot
首先我們知道Boot在計算機中是啟動的意思阿弃,Spring Boot在spring中的圖標剛好就是個啟動開關渣淳,意味著它提供的是spring的一種一站式快速使用解決方案。
而Spring Boot是Spring社區(qū)較新的一個項目鄙漏。該項目的目的是幫助開發(fā)者更容易的創(chuàng)建基于Spring的應用程序和服務棺蛛,讓更多人能更快的對Spring進行入門體驗鞠值,讓Java開發(fā)也能夠?qū)崿F(xiàn)Ruby on Rails那樣的生產(chǎn)效率。為Spring生態(tài)系統(tǒng)提供了一種固定的钞钙、約定優(yōu)于配置風格的框架芒炼。

Spring Boot具有如下特性:

  • 為基于Spring的開發(fā)提供更快的入門體驗
  • 開箱即用术徊,沒有代碼生成,也無需XML配置子寓。同時也可以修改默認值來滿足特定的需求斜友。
  • 提供了一些大型項目中常見的非功能性特性,如嵌入式服務器烹看、安全惯殊、指標也殖,健康檢測毕源、外部配置等陕习。
  • Spring Boot并不是對Spring功能上的增強该镣,而是提供了一種快速使用Spring的方式。

簡單例子

  • 首先創(chuàng)建一個一般的Maven項目省艳,有一個pom.xml和基本的src/main/java結(jié)構跋炕。

pom.xml 文件

  • 注意:pom.xml 下載完成后出現(xiàn)錯誤律适。以下有兩種情況
  • 1捂贿、如果是某些包沒有下載成功厂僧,可以刪掉指定去maven本地庫中刪掉指定文件夾,然后重新編譯項目辰妙,讓maven重新下載包。

  • 2福荸、如果出現(xiàn)以下錯誤肴掷,則右鍵項目呆瞻,【Maven】【Update Project Configuration...】即可。

      <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0</modelVersion>
      
          <groupId>com.etc</groupId>
          <artifactId>SpringBoot</artifactId>
          <version>0.0.1-SNAPSHOT</version>
          <packaging>jar</packaging>
      
          <name>SpringBoot</name>
          <description></description>
      
          <parent>
              <groupId>org.springframework.boot</groupId>
              <artifactId>spring-boot-starter-parent</artifactId>
              <version>1.5.8.RELEASE</version>
              <relativePath/> <!-- lookup parent from repository -->
          </parent>
      
          <properties>
              <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
              <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
              <java.version>1.8</java.version>
          </properties>
      
          <dependencies>
              <!-- spring-boot-starter-*這里的*代表spring里頭的某個功能 -->
              <dependency>
                  <groupId>org.springframework.boot</groupId>
                  <artifactId>spring-boot-starter-web</artifactId>
              </dependency>
              <!-- 單元測試 -->
              <dependency>
                  <groupId>org.springframework.boot</groupId>
                  <artifactId>spring-boot-starter-test</artifactId>
                  <scope>test</scope>
              </dependency>
              <!-- 啟動熱部署 -->
              <dependency>
                  <groupId>org.springframework.boot</groupId>
                  <artifactId>spring-boot-devtools</artifactId>
                  <scope>provided</scope>
                  <optional>true</optional>
              </dependency>
          </dependencies>
      
          <build>
              <plugins>
                  <plugin>
                      <groupId>org.springframework.boot</groupId>
                      <artifactId>spring-boot-maven-plugin</artifactId>
                      <dependencies>
                          <dependency>
                              <groupId>org.springframework</groupId>
                              <artifactId>springloaded</artifactId>
                              <version>1.2.6.RELEASE</version>
                          </dependency>
                      </dependencies>
                  </plugin>
              </plugins>
          </build>
      </project>
    

對pom的說明

  • 首先是增加了<parent>滚朵,增加父pom比較簡單前域,而且spring-boot-starter-parent包含了大量配置好的依賴管理匿垄,在自己項目添加這些依賴的時候不需要寫<version>版本號移宅。

  • 使用父pom雖然簡單,但是有些情況我們已經(jīng)有父pom椿疗,不能直接增加<parent>時漏峰,可以通過如下方式:

          <dependencyManagement>
                   <dependencies>
                      <dependency>
                          <!-- Import dependency management from Spring Boot -->
                          <groupId>org.springframework.boot</groupId>
                          <artifactId>spring-boot-dependencies</artifactId>
                          <version>1.2.3.RELEASE</version>
                          <type>pom</type>
                          <scope>import</scope><!—這個地方-->
                      </dependency>
                  </dependencies>
              </dependencyManagement>
    

關于java.version屬性

  • 上面pom.xml雖然沒有出現(xiàn)這個屬性,這里要特別提醒届榄。
  • Spring默認使用jdk1.6浅乔,如果你想使用jdk1.8,你需要在pom.xml的屬性里面添加java.version铝条,如下:
    <properties>
        <java.version>1.8</java.version>
    </properties>

添加spring-boot-starter-web依賴

  • Spring通過添加spring-boot-starter-*這樣的依賴就能支持具體的某個功能靖苇。
  • 我們這個示例最終是要實現(xiàn)web功能,所以添加的是這個依賴攻晒。
  • 更完整的功能列表可以查看:Using-boot-starter-poms

添加spring-boot-maven-plugin插件

  • 該插件支持多種功能,常用的有兩種鲁捏,第一種是打包項目為可執(zhí)行的jar包芯砸。
  • 在項目根目錄下執(zhí)行mvn package將會生成一個可執(zhí)行的jar包萧芙,jar包中包含了所有依賴的jar包,只需要這一個jar包就可以運行程序假丧,使用起來很方便双揪。該命令執(zhí)行后還會保留一個XXX.jar.original的jar包,包含了項目中單獨的部分包帚。
  • 生成這個可執(zhí)行的jar包后渔期,在命令行執(zhí)行java -jar xxxx.jar即可啟動項目。
  • 另外一個命令就是mvn spring-boot:run渴邦,可以直接使用tomcat(默認)啟動項目疯趟。
  • 第二種功能就是熱部署了,在我們開發(fā)過程中谋梭,我們需要經(jīng)常修改信峻,為了避免重復啟動項目,我們可以啟用熱部署瓮床。

spring-loaded熱部署

  • Spring-Loaded項目提供了強大的熱部署功能盹舞,添加/刪除/修改 方法/字段/接口/枚舉 等代碼的時候都可以熱部署,速度很快隘庄,很方便踢步。

  • 想在Spring Boot中使用該功能非常簡單,就是在spring-boot-maven-plugin插件下面添加依賴:

  •           <dependency>
                  <groupId>org.springframework</groupId>
              <artifactId>springloaded</artifactId>
                  <version>1.2.6.RELEASE</version>
              </dependency>
              <!--  支持熱部署 eclipse推薦使用丑掺,注:該功能在dependencies中添加 -->
              <dependency>
                  <groupId>org.springframework.boot</groupId>
                  <artifactId>spring-boot-devtools</artifactId>
                  <scope>provided</scope>
                  <optional>true</optional>
              </dependency>
    
  • 添加以后获印,通過mvn spring-boot:run啟動就支持熱部署了。

  • 注意:使用熱部署的時候吼鱼,需要IDE編譯類后才能生效蓬豁,你可以打開自動編譯功能绰咽,這樣在你保存修改的時候菇肃,類就自動重新加載了。

總結(jié):

作為一個新生程序猿取募,Damon希望能夠與大家一同進步琐谤。文章或者描述有所不足的地方,希望大家多多提出來玩敏,一同進步斗忌。

Damon會繼續(xù)發(fā)掘一些有用的咨詢,知識以及新工具旺聚,與大家一同分享织阳,謝謝!

過去文章都上傳到github砰粹,有興趣的小伙伴可以Star下:https://github.com/xxxyyh/Front-end-knowledge.git

?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末唧躲,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌弄痹,老刑警劉巖饭入,帶你破解...
    沈念sama閱讀 218,525評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異肛真,居然都是意外死亡谐丢,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,203評論 3 395
  • 文/潘曉璐 我一進店門蚓让,熙熙樓的掌柜王于貴愁眉苦臉地迎上來钝吮,“玉大人恐似,你說我怎么就攤上這事。” “怎么了莱找?”我有些...
    開封第一講書人閱讀 164,862評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長帝洪。 經(jīng)常有香客問我哲身,道長,這世上最難降的妖魔是什么衰腌? 我笑而不...
    開封第一講書人閱讀 58,728評論 1 294
  • 正文 為了忘掉前任新蟆,我火速辦了婚禮,結(jié)果婚禮上右蕊,老公的妹妹穿的比我還像新娘琼稻。我一直安慰自己,他們只是感情好饶囚,可當我...
    茶點故事閱讀 67,743評論 6 392
  • 文/花漫 我一把揭開白布帕翻。 她就那樣靜靜地躺著,像睡著了一般萝风。 火紅的嫁衣襯著肌膚如雪嘀掸。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,590評論 1 305
  • 那天规惰,我揣著相機與錄音睬塌,去河邊找鬼。 笑死歇万,一個胖子當著我的面吹牛揩晴,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播贪磺,決...
    沈念sama閱讀 40,330評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼硫兰,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了寒锚?” 一聲冷哼從身側(cè)響起劫映,我...
    開封第一講書人閱讀 39,244評論 0 276
  • 序言:老撾萬榮一對情侶失蹤呻粹,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后苏研,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體等浊,經(jīng)...
    沈念sama閱讀 45,693評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,885評論 3 336
  • 正文 我和宋清朗相戀三年摹蘑,在試婚紗的時候發(fā)現(xiàn)自己被綠了筹燕。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,001評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡衅鹿,死狀恐怖撒踪,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情大渤,我是刑警寧澤制妄,帶...
    沈念sama閱讀 35,723評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站泵三,受9級特大地震影響耕捞,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜烫幕,卻給世界環(huán)境...
    茶點故事閱讀 41,343評論 3 330
  • 文/蒙蒙 一俺抽、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧较曼,春花似錦磷斧、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,919評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至萍歉,卻和暖如春侣颂,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背翠桦。 一陣腳步聲響...
    開封第一講書人閱讀 33,042評論 1 270
  • 我被黑心中介騙來泰國打工横蜒, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留胳蛮,地道東北人销凑。 一個月前我還...
    沈念sama閱讀 48,191評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像仅炊,于是被迫代替她去往敵國和親斗幼。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,955評論 2 355

推薦閱讀更多精彩內(nèi)容