在前面的文章過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編譯類后才能生效蓬豁,你可以打開自動編譯功能绰咽,這樣在你保存修改的時候菇肃,類就自動重新加載了。