Spring Boot 基礎知識大補(1)

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 目錄結構

Spring Boot 基礎知識大補(1)


配置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>

nexus-aliyun

<name>nexus aliyun/<name>

http://maven.aliyun.com/nexus/content/groups/public

<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)


分享到:


相關文章: