Spring Boot 概念
用來簡化新Spring應用的初始搭建以及開發過程。該框架使用了特定的方式來進行配置,不再需要定義樣板化的配置。通過這種方式,Spring Boot致力於在蓬勃發展的快速應用開發領域成為領導者。
基於Spring4.0設計,繼承了Spring框架原有的優秀特性,通過簡化配置簡化Spring應用的整個搭建和開發過程。SpringBoot通過集成大量的框架使得依賴包的版本衝突,以及引用的不穩定性等問題得到了很好的解決。
SpringBoot的特徵
(1)創建獨立的Spring應用程序,並且基於其Maven或Gradle插件,可以創建可執行的JARs和WARs;
(2)內嵌Tomcat或Jetty等Servlet容器;
(3)提供自動配置的starter項目對象模型,簡化Maven配置;
(4)儘可能自動配置Spring容器;
(5)提供準備好的特性,如指標、健康檢查和外部化配置;
(6)絕對沒有代碼生成,不需要XML配置
SpringBoot框架有兩個非常重要的策略:開箱即用和約定優於配置。
- 開箱即用Outofbox
是指在開發過程中,通過在MAVEN項目的pom文件中添加相關依賴包,使用對應註解來代替繁瑣的XML配置文件,達到管理對象的生命週期。使得開發人員擺脫了複雜的配置工作以及依賴的管理工作,更加專注於業務邏輯。
- 約定優於配置
是一種由SpringBoot本身來配置目標結構,由開發者在結構中添加信息的軟件設計範式。降低了部分靈活性,增加了BUG定位的複雜性,但減少了開發人員需要做出決定的數量,同時減少了大量的XML配置,並且可以將代碼編譯、測試和打包等工作自動化。
SpringBoot應用系統開發模板的基本架構設計從前端到後臺進行說明:
前端常使用模板引擎,主要有FreeMarker和Thymeleaf,它們都是用Java語言編寫的,渲染模板並輸出相應文本,使得界面的設計與應用的邏輯分離,同時前端開發還會使用到Bootstrap、AngularJS、JQuery等;在瀏覽器的數據傳輸格式上採用Json,非xml,同時提供RESTfulAPI;SpringMVC框架用於數據到達服務器後處理請求;到數據訪問層主要有Hibernate、MyBatis、JPA等持久層框架;數據庫常用MySQL;
Spring boot與Spring cloud 關係(*)
- Spring boot 是 Spring 的一套快速配置腳手架,可以基於spring boot 快速開發單個微服務;
- Spring Cloud是一個基於Spring Boot實現的雲應用開發工具;
- Spring boot專注於快速、方便集成的單個個體;
- Spring Cloud是關注全局的服務治理框架;
- spring boot使用了默認大於配置的理念,很多集成方案已經幫你選擇好了,能不配置就不配置;
- Spring Cloud很大的一部分是基於Spring boot來實現
- Spring boot可以離開Spring Cloud獨立使用開發項目,但是Spring Cloud離不開Spring boot,屬於依賴的關係。
存在這樣的關係:spring -> spring boot > spring cloud
Spring Boot 相關注解
常用啟動器starter註解:
- spring-boot-starter-web (嵌入tomcat和web開發需要servlet與jsp支持)
- spring-boot-starter-data-jpa (數據庫支持)
- spring-boot-starter-data-redis (redis數據庫支持)
- spring-boot-starter-data-solr (solr搜索應用框架支持)
- mybatis-spring-boot-starter (第三方的mybatis集成starter)
註解具體含義
- @SpringBootApplication 相當於以下3個註解
- @SpringBootConfiguration:組合了 @Configuration 註解,實現配置文件的功能。
- @EnableAutoConfiguration:打開自動配置的功能,也可以關閉某個自動配置的選項,如關閉數據源自動配置功能: @SpringBootApplication(exclude = {DataSourceAutoConfiguration.class })。
- @ComponentScan:Spring組件掃描。
Spring boot 項目技術選型
核心框架:
● 分佈式協調服務:ZooKeeper 3.4.11
●校驗框架:
Hibernate Validator 5.3.5.Final
● 安全框架:Apache Shiro 1.4.0
● 代碼生成:MyBatis Plus Generator 2.1.6
● 持久層框架:MyBatis 3.4.5 + MyBatis-Plus 2.1.6
● 數據庫連接池:Druid 1.1.5
● 緩存框架:Redis.clients:jedis 2.8.2
● 隊列框架:Apache ActiveMQ 5.14.5
● 會話管理:Spring-Session 1.3.1
● 日誌管理:SLF4J
● 前端框架:Layui 2.2.45
● 公用工具集:Hutool 3.2.3
● 支付組件:Egan pay-java-parent 2.0.4
● 代碼簡化:Lombok 1.16.18
● 序列化框架:Fastjson 1.2.41
● HTTP客戶端:Hutool-http 3.2.3
● 接口測試框架:Swagger2
Spring Boot 安裝
目錄結構
spring boot 目錄結構
配置Maven
1、Maven官網下載十分的慢,此處提供給大家一個很好的國內鏡像網站,清華園鏡像站 -
https://mirrors.tuna.tsinghua.edu.cn/
- 下載Maven的zip包後解壓到本地。
- 設置環境變量 “MAVEN_HOME" 為maven的解壓位置 如:“c:\\maven-3.6.3”。
- 給環境變量 “Path” 增加內容 “%MAVEN_HOME%\\bin”.
- 測試Maven是否安裝成功,管理員身份打開cmd,運行mvn -v 命令,如果顯示maven版本號信息則表示maven安裝配置成功。
2、修改默認配置
- a) 打開 MAVEN_HOME\\conf下的 settings.xml 文件,添加本地倉庫,內容如下:
<localrepository>D:\\maven_locan_repository/<localrepository>
- b) 修改默認遠程倉庫鏡像
Maven默認遠程倉庫官網在國外,下載經常出問題,使用阿里雲的鏡像倉庫可以解決問題,配置如下:
<mirror>
<name>nexus aliyun/<name>
<mirrorof>*/<mirrorof>
3、關聯Idea 和本地maven
根據使用的開發工具進行關聯即可,如開發工具推薦IntelliJIDEA 。
Spring Boot HelloWorld
- Idea 中新建Maven項目,過程中會自動下載Maven相關依賴。
- 配置項目對象模型文件pom.xml
a) 配置父類starter依賴
<parent>
<groupid>org.springframework.boot/<groupid>
<artifactid>spring-boot-starter-parent/<artifactid>
<version>2.2.2.RELEASE/<version>
<relativepath>
b) 配置web starter 依賴
<dependencies>
<dependency>
<groupid>org.springframework.boot/<groupid>
<artifactid>spring-boot-starter-web/<artifactid>
- 編寫程序-Spring Boot HelloWorld
a) 編寫入口類
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class HelloWorldMainApplication {
public static void main(String[] args){
//啟動spring 應用
SpringApplication.run(HelloWorldMainApplication.class, args);
}
}
b) HelloController 編寫
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
@Controller
public class HelloController {
@ResponseBody
@RequestMapping("/hello")
public String hello(){
return "Hello World!";
}
}
這樣就可以運行入口類,控制檯會顯示端口信息,根據端口號訪問/hello就可以看到瀏覽器顯示了服務端返回的“Hello World !”。
請繼續看:Spring Boot 基礎知識大補(2)
閱讀更多 天天面試題 的文章