一、Web應用開發背景
使用Java做Web應用開發已經有近20年的歷史了,從最初的Servlet1.0一步步演化到現在如此多的框架、庫以及整個生態系統。經過這麼長時間的發展,Java作為一個成熟的語言,也演化出了非常成熟的生態系統,這也是許多公司採用Java作為主流的語言進行伺服器端開發的原因,也是為什麼Java一直保持著非常活躍的使用者群體的原因。
最受Java開發者喜好的框架當屬Spring,Spring也成為了在Java EE開發中真正意義上的標準,但是隨著新技術的發展,指令碼語言大行其道的時代(Node JS,Ruby,Groovy,Scala等),Java EE使用Spring逐漸變得笨重起來,大量的XML檔案存在與專案中,繁瑣的配置,整合第三方框架的配置問題,低下的開發效率和部署效率等等問題。
這些問題在不斷的社群反饋下,Spring團隊也開發出了相應的框架:Spring Boot。Spring Boot可以說是至少近5年來Spring乃至整個Java社群最有影響力的專案之一,也被人看作是:Java EE開發的顛覆者!
二、Spring Boot解決的問題
(1) Spring Boot使編碼變簡單
(2) Spring Boot使配置變簡單
(3) Spring Boot使部署變簡單
(4) Spring Boot使監控變簡單
(5) Spring的不足
三、Spring Boot的優點
Spring Boot繼承了Spring的優點,並新增了一些新功能和特性:
- SpringBoot是伴隨著Spring4.0誕生的,一經推出,引起了巨大的反向;
- 從字面理解,Boot是引導的意思,因此SpringBoot幫助開發者快速搭建Spring框架;
- SpringBoot幫助開發者快速啟動一個Web容器;
- SpringBoot繼承了原有Spring框架的優秀基因;
- SpringBoot簡化了使用Spring的過程;
- Spring Boot為我們帶來了指令碼語言開發的效率,但是Spring Boot並沒有讓我們意外的新技術,都是Java EE開發者常見的額技術。
四、Spring Boot主要特性
(1)遵循“習慣優於配置”的原則,使用Spring Boot只需要很少的配置,大部分的時候我們直接使用預設的配置即可; (2)專案快速搭建,可以無需配置的自動整合第三方的框架; (3)可以完全不使用XML配置檔案,只需要自動配置和Java Config; (4)內嵌Servlet容器,降低了對環境的要求,可以使用命令直接執行專案,應用可用jar包執行:java -jar; (5)提供了starter POM, 能夠非常方便的進行包管理, 很大程度上減少了jar hell或者dependency hell; (6)執行中應用狀態的監控; (7)對主流開發框架的無配置整合; (8)與雲端計算的天然繼承;
五、Spring Boot的核心功能
(1)獨立執行的Spring專案
Spring Boot可以以jar包的形式進行獨立的執行,使用:java -jar xx.jar 就可以成功的執行專案,或者在應用專案的主程式中執行main函式即可;
(2)內嵌的Servlet容器
內嵌容器,使得我們可以執行執行專案的主程式main函式,實現專案的快速執行;
主程式程式碼SpringbootDemoApplication.java
package com.springboot.demo.helloworld;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class SpringBootHelloWorldApplication {
public static void main(String[] args) {
SpringApplication.run(SpringBootHelloWorldApplication.class, args);
}
}
複製程式碼
(3)提供starter簡化Manen配置
Spring Boot提供了一系列的starter pom用來簡化我們的Maven依賴,下邊是建立一個web專案中自動包含的依賴,使用的starter pom依賴為:spring-boot-starter-web
Spring Boot官網還提供了很多的starter pom,請參考:
(4)自動配置Spring
Spring Boot會根據我們專案中類路徑的jar包/類,為jar包的類進行自動配置Bean,這樣一來就大大的簡化了我們的配置。當然,這只是Spring考慮到的大多數的使用場景,在一些特殊情況,我們還需要自定義自動配置;
(5)應用監控
注意:以前的版本還支援這個功能,目前使用的2.0.4.RELEASE已經不再支援此功能!
Spring Boot提供了基於http、ssh、telnet對執行時的專案進行監控;這個聽起來是不是很炫酷!
示例:以SSH登入為例
1、首先,新增starter pom依賴
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-remote-shell</artifactId>
</dependency>
複製程式碼
2、執行專案,此時在控制檯中會出現SSH訪問的密碼:
3、使用SecureCRT登入到我們的程式,埠為2000,使用者為user:
密碼就是剛才的shell access;
但是當我點選連線的時候,出現錯誤:
顯然是SecureCRT的版本不支援,所以就放棄了這個,使用Git Bash:
ssh -p 2000 user@127.0.0.1
複製程式碼
剩下的事情,大家自己玩吧!
(6)無程式碼生成和XML配置
Spring Boot神奇的地方不是藉助於程式碼生成來實現的,而是通過條件註解的方式來實現的,這也是Spring 4.x的新特性。
六、Spring Boot的快速搭建案例
下邊使用的是IDEA快速搭建一個Spring Boot專案
(1)File—-New—New Project
(2)點選Next填寫相應的資訊
(3)點選Next,選擇Dependencies,這裡建立Web專案選擇—–Web:
(4)點選Next,設定專案名稱,這裡預設設定,點選Next之後,專案等一下就建立好了
找到應用程式的主函式,執行即可:
注意,在pom檔案裡的java版本這個要和你的機子上一致!我的是1.8,預設建立專案的時候為1.8:
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
</properties>
複製程式碼
轉載自部落格徐劉根:blog.csdn.net/xlgen157387…