Spring Boot 是一個框架,其用來簡化 Spring 應用的初始化搭建以及開發過程。其使用特定的方式來配置,使開發人員減小配置操做。相似於 maven 整合 jar 包,Spring Boot 整合了框架。
官網:https://spring.io/projects/spring-boot/css
(1)配置 web.xml 文件,加載 Spring,Spring MVC(未使用 maven 時,還要手動導入 jar 包)。
(2)配置數據庫鏈接。
(3)開啓註解。
(4)........
(5)部署到 Tomcat 容器中進行調試。
使用了SpringBoot後,你將體會到什麼叫日了狗了,真他喵的簡單。html
(1)單體應用:
指的是一個單體應用程序,將其全部的功能放在一個進程中處理,在服務器上覆制這個單體進行擴展。簡單的講就是將全部的功能模塊都使用一個項目來處理,而後打成war包,發佈到服務器上(在不一樣的服務器上部署一樣的程序,從而提升併發能力)。
注意:可能修改某個部分時,使得整個程序須要從新部署才行,是一個牽一髮而動全身的問題。java
(2)微服務:(屬於一種架構風格)
微服務架構是將每個功能模塊分別放進到一個獨立的服務中,而且經過跨服務器分發這些服務進行擴展,只在有須要時才複製。一個應用應該是一組小型服務,能夠經過HTTP的方式來互通。
注意:修改某部分時,只須要從新部署修改的功能模塊那個微服務便可。每個功能模塊都是可獨立替換和獨立維護的軟件單元,徹底體現了高可複用性,高可維護性,高可擴展性。web
(1)Spring Boot能夠快速構建一個應用。
簡化Spring應用和服務的建立、開發與部署,簡化了配置文件,使用嵌入式web服務器,含有諸多開箱即用的微服務功能,能夠和spring cloud聯合部署。核心思想是約定大於配置,應用只須要不多的配置便可,簡化了應用開發模式。spring
(2)Spring Cloud在分佈式中創建鏈接。
是一套完整的微服務解決方案,是一系列不一樣功能的微服務框架的集合。Spring Cloud基於Spring Boot,簡化了分佈式系統的開發,集成了服務發現、配置管理、消息總線、負載均衡、斷路器、數據監控等各類服務治理能力。好比sleuth提供了全鏈路追蹤能力,Netflix套件提供了hystrix熔斷器、zuul網關等衆多的治理組件。config組件提供了動態配置能力,bus組件支持使用RabbitMQ、kafka、Activemq等消息隊列,實現分佈式服務之間的事件通訊。數據庫
(3)Spring Cloud Date Flow處理數據。apache
step1:進入網址:http://start.spring.io/
step2:選擇相關信息,以下圖:windows
step3:點擊Generate the project, 能夠下載項目壓縮包.
step4:解壓項目後,使用IDEA導入。瀏覽器
File -> New -> Model from Existing Source.. -> 選擇解壓後的文件夾 -> OK,
選擇 Maven 無腦 Next,OK done!(固然,根據須要,能夠適當作些改變)
可能會出現錯誤的狀況。緣由是沒有相關的依賴信息(jar包),等待後臺聯網下載便可。tomcat
step1: 選擇 File -> New —> Project… 彈出新建項目的框
step2: 選擇 Spring Initializr,Next 也會出現上述相似的配置界面,Idea 幫咱們作了集成
step3: 填寫相關內容後,點擊 Next 選擇依賴的包再點擊 Next,最後肯定信息無誤點擊 Finish。
(1)構建啓動Spring的主類
【HelloWorldApplication.java】 package com.test.application; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; /** * @SpringBootApplication 用於標註一個主程序類,說明其爲一個SpringBoot應用 */ @SpringBootApplication public class HelloWorldApplication { public static void main(String[] args){ // 用於啓動一個Spring應用 SpringApplication.run(HelloWorldApplication.class, args); } }
(2)構建一個Controller類
package com.example.helloworld.controller; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; @Controller public class HelloWorldController { @ResponseBody @RequestMapping("/hello") public String show(){ return "Hello World"; } }
(3)開啓服務
(4)啓動異常問題:
question1:
出現 java.net.BindException: Address already in use. 異常。多是端口被佔用。
先查詢是哪一個進程佔用了,若能直接殺死最好,不行的話,能夠修改默認端口號(後續再介紹)。 windows查詢端口號以及進程: WIN + R 敲cmd打開命令行。 輸入:netstat -aon|findstr 端口號 輸出的是端口號以及其PID。 輸入:tasklist | findstr PID 輸出的是佔用端口號的進程。 輸入:taskkill /f /t /im 進程名 (用於結束進程)
question2:
springboot啓動後訪問不到controller:
當啓動springboot時@SpringBootApplication註解會去自動掃描當前目錄和其子目錄,若是controller層不在子目錄則掃描不到。因此將其配置到子目錄中。
(5)測試路徑:(至此,測試完成)
https://localhost:8080/hello
(6)建立可執行的jar文件。須要在pom.xml中添加插件信息(按上述兩種方法新建的項目都自動配置了)。
【插件配置信息】 <!-- 將應用打包成一個可執行的jar包 --> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> 【pom.xml】 <?xml version="1.0" encoding="UTF-8"?> <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> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.1.6.RELEASE</version> <relativePath/> <!-- lookup parent from repository --> </parent> <groupId>com.example</groupId> <artifactId>helloworld</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>war</packaging> <name>helloworld</name> <description>Demo project for Spring Boot</description> <properties> <java.version>1.8</java.version> </properties> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-tomcat</artifactId> <scope>provided</scope> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> </project>
將項目打包。
找到打包後的文件,拷貝到某個路徑下,此處我拷貝到(E:\JAVA)。
進入路徑,並執行 java -jar 包名,便可啓動Spring,經過瀏覽器能夠訪問。
(7)目錄結構
static:用於保存靜態資源,好比css,html,image等。
templates:保存模板頁面,因爲SpringBoot使用嵌入式的tomcat,不推薦使用JSP(使用jsp會失去springboot的一些特性),若是想寫JSP,可使用模板引擎(好比:freemarker, thymeleaf)。
application.properties:用來修改默認的配置信息。