天天看點

SpringBoot基礎——SpringBoot入門一、簡介二、環境準備三、Spring Boot HelloWorld四、HelloWorld探究五、使用Spring Initializer快速建立SpringBoot

之前學習過一遍Springboot,感覺知識有一些淩亂。是以打算從到尾整理一遍知識架構,今天是第一章SpringBoot入門,後面會繼續更新下面的知識,主要是總結尚矽谷視訊中的知識點。

一、簡介

Springboot來簡化Spring應用開發,約定大于配置,去繁從簡,just run就能建立一個獨立的、産品級應用。

背景:J2EE笨重的開發、繁多的配置、低下的開發效率、複雜的部署流程、第三方技術內建難度大。

解決:

  • “Spring全家桶”時代
  • SpringBoot -》J2EE一站式解決方案
  • Spring Cloud -》分布式整體解決方案
    SpringBoot基礎——SpringBoot入門一、簡介二、環境準備三、Spring Boot HelloWorld四、HelloWorld探究五、使用Spring Initializer快速建立SpringBoot
    優點:
  • 快速建立獨立運作的Spring項目以及與主流架構內建
  • 使用嵌入式的Servlet容器,應用無需打成war包
  • starters自動依賴與版本控制
  • 大量的自動配置,簡化開發,也可以使用預設值
  • 無需配置XML,無代碼生成,開箱即用
  • 準生産環境的運作時應用監控
  • 與雲計算的天然內建

二、環境準備

  • jdk1.8
  • maven3.x
  • IntellijlDEA2018
  • SpringBoot 2.1.5 RELEASE

三、Spring Boot HelloWorld

測試功能:浏覽器發送hello請求,伺服器接受請求并處理,響應Hello World字元串。

1. 建立一個maven工程;(jar)

SpringBoot基礎——SpringBoot入門一、簡介二、環境準備三、Spring Boot HelloWorld四、HelloWorld探究五、使用Spring Initializer快速建立SpringBoot
SpringBoot基礎——SpringBoot入門一、簡介二、環境準備三、Spring Boot HelloWorld四、HelloWorld探究五、使用Spring Initializer快速建立SpringBoot
SpringBoot基礎——SpringBoot入門一、簡介二、環境準備三、Spring Boot HelloWorld四、HelloWorld探究五、使用Spring Initializer快速建立SpringBoot

2. 導入SpringBoot相關的依賴

SpringBoot基礎——SpringBoot入門一、簡介二、環境準備三、Spring Boot HelloWorld四、HelloWorld探究五、使用Spring Initializer快速建立SpringBoot

3.編寫一個主程式;啟動Spring Boot應用

SpringBoot基礎——SpringBoot入門一、簡介二、環境準備三、Spring Boot HelloWorld四、HelloWorld探究五、使用Spring Initializer快速建立SpringBoot

4.編寫相關的Controller、Service

package com.crud.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

/**
 * HelloController class
 *
 * @author Flc
 * @date 2019/6/1
 */
@Controller
public class HelloController {

    @ResponseBody
    @RequestMapping("/hello")
    public String hello(){
        return "hello world";
    }
}
           

5.啟動測試

SpringBoot基礎——SpringBoot入門一、簡介二、環境準備三、Spring Boot HelloWorld四、HelloWorld探究五、使用Spring Initializer快速建立SpringBoot
SpringBoot基礎——SpringBoot入門一、簡介二、環境準備三、Spring Boot HelloWorld四、HelloWorld探究五、使用Spring Initializer快速建立SpringBoot

6.簡化部署

  1. 在pom.xml中添加一個插件依賴
    SpringBoot基礎——SpringBoot入門一、簡介二、環境準備三、Spring Boot HelloWorld四、HelloWorld探究五、使用Spring Initializer快速建立SpringBoot
    2.選擇pakage方法進行打包
    SpringBoot基礎——SpringBoot入門一、簡介二、環境準備三、Spring Boot HelloWorld四、HelloWorld探究五、使用Spring Initializer快速建立SpringBoot
    3.将打包好的jar,用cmd指令行運作部署
    SpringBoot基礎——SpringBoot入門一、簡介二、環境準備三、Spring Boot HelloWorld四、HelloWorld探究五、使用Spring Initializer快速建立SpringBoot

四、HelloWorld探究

1.POM檔案

  1. 父項目
<parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.1.5.RELEASE</version>
    </parent>
    
    他的父項目
    <parent>
    	<groupId>org.springframework.boot</groupId>
    	<artifactId>spring-boot-dependencies</artifactId>
    	<version>2.1.5.RELEASE</version>
    	<relativePath>../../spring-boot-dependencies</relativePath>
  	</parent>
  	他來真正管理Spring Boot應用裡面的所有依賴版本;
  	舉例如下:
  	<properties>
    <activemq.version>5.15.9</activemq.version>
    <antlr2.version>2.7.7</antlr2.version>
    <appengine-sdk.version>1.9.74</appengine-sdk.version>
    <artemis.version>2.6.4</artemis.version>
    <aspectj.version>1.9.4</aspectj.version>
    <assertj.version>3.11.1</assertj.version>
    <atomikos.version>4.0.6</atomikos.version>
    <bitronix.version>2.1.4</bitronix.version>
    <build-helper-maven-plugin.version>3.0.0</build-helper-maven-plugin.version>
    <byte-buddy.version>1.9.12</byte-buddy.version>
    <caffeine.version>2.6.2</caffeine.version>
    <cassandra-driver.version>3.6.0</cassandra-driver.version>
    <classmate.version>1.4.0</classmate.version>
    <commons-codec.version>1.11</commons-codec.version>
           

Spring Boot的版本仲裁中心;

以後我們導入依賴預設是不需要寫版本;(沒有在dependencies裡面管理的依賴自然需要寫版本)

2.導入的依賴

<dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
    </dependencies>
           
  1. spring-boot-starter:spring-boot場景啟動器;幫我們導入了web子產品正常運作所依賴的元件
  2. SpringBoot将所有的功能場景都抽取出來,做成一個個starters(啟動器),隻需要在項目裡面引用這些starter相關場景的所有依賴就會導入進來。要用什麼功能,就導入什麼starter。

2.主程式類

@SpringBootApplication
public class HelloWorldMainApplication {
    public static void main(String[] args) {
        //啟動spring應用
        SpringApplication.run(HelloWorldMainApplication.class,args);
    }
}
           
  1. @SpringBootApplication:Spring Boot應用标注在某個類上說明這個類是SpringBoot的主配置類,SpringBoot就應該運作這個類的main方法來啟動SpringBoot應用
@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
@SpringBootConfiguration
@EnableAutoConfiguration
@ComponentScan(
    excludeFilters = {@Filter(
    type = FilterType.CUSTOM,
    classes = {TypeExcludeFilter.class}
), @Filter(
    type = FilterType.CUSTOM,
    classes = {AutoConfigurationExcludeFilter.class}
)}
)
public @interface SpringBootApplication {
           
  1. @SpringBootConfiguration:Spring Boot的配置類;

    标注在某個類上,表示這是一個Spring Boot的配置類;

    @Configuration:配置類上來标注這個注解;

    配置類 ----- 配置檔案;配置類也是容器中的一個元件;@Component

  2. @EnableAutoConfiguration:開啟自動配置功能;

    以前我們需要配置的東西,Spring Boot幫我們自動配置;@EnableAutoConfiguration告訴SpringBoot開啟自 動配置功能;這樣自動配置才能生效;

@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
@AutoConfigurationPackage
@Import({AutoConfigurationImportSelector.class})
public @interface EnableAutoConfiguration {

           
  1. @AutoConfigurationPackage:自動配置包

    @Import(AutoConfigurationPackages.Registrar.class):

    Spring的底層注解@Import,給容器中導入一個元件;導入的元件由 AutoConfigurationPackages.Registrar.class;

    将主配置類(@SpringBootApplication标注的類)的所在包及下面所有子包裡面的所有元件掃描到Spring容器

  2. 給容器中導入元件?

    EnableAutoConfigurationImportSelector:導入哪些元件的選擇器;

    将所有需要導入的元件以全類名的方式傳回;這些元件就會被添加到容器中;

    會給容器中導入非常多的自動配置類(xxxAutoConfiguration);就是給容器中導入這個場景需要的所有元件, 并配置好這些元件;

    SpringBoot基礎——SpringBoot入門一、簡介二、環境準備三、Spring Boot HelloWorld四、HelloWorld探究五、使用Spring Initializer快速建立SpringBoot
  3. Spring Boot在啟動的時候從類路徑下的META-INF/spring.factories中擷取EnableAutoConfiguration指定的值,将 這些值作為自動配置類導入到容器中,自動配置類就生效,幫我們進行自動配置工作;以前我們需要自己配置的東 西,自動配置類都幫我們;

    J2EE的整體整合解決方案和自動配置都在spring-boot-autoconfigure-1.5.9.RELEASE.jar

五、使用Spring Initializer快速建立SpringBoot

SpringBoot基礎——SpringBoot入門一、簡介二、環境準備三、Spring Boot HelloWorld四、HelloWorld探究五、使用Spring Initializer快速建立SpringBoot
SpringBoot基礎——SpringBoot入門一、簡介二、環境準備三、Spring Boot HelloWorld四、HelloWorld探究五、使用Spring Initializer快速建立SpringBoot
SpringBoot基礎——SpringBoot入門一、簡介二、環境準備三、Spring Boot HelloWorld四、HelloWorld探究五、使用Spring Initializer快速建立SpringBoot
  1. 主程式已經生成好了,我們隻需要我們自己的邏輯
  2. resources檔案夾中目錄結構 static:儲存所有的靜态資源; js css images; templates:儲存所有的模闆頁面;(Spring Boot預設jar包使用嵌入式的Tomcat,預設不支援JSP頁 面);可以使用模闆引擎(freemarker、thymeleaf); application.properties:Spring Boot應用的配置檔案;可以修改一些預設設定;

繼續閱讀