SpringBoot基礎(chǔ)——SpringBoot入門

之前學(xué)習(xí)過一遍Springboot,感覺知識(shí)有一些凌亂。所以打算從到尾整理一遍知識(shí)架構(gòu),今天是第一章SpringBoot入門,后面會(huì)繼續(xù)更新下面的知識(shí),主要是總結(jié)尚硅谷視頻中的知識(shí)點(diǎn)。

一、簡(jiǎn)介

Springboot來簡(jiǎn)化Spring應(yīng)用開發(fā),約定大于配置,去繁從簡(jiǎn),just run就能創(chuàng)建一個(gè)獨(dú)立的、產(chǎn)品級(jí)應(yīng)用。
<font color="blue" size="4.5px">背景</font>:J2EE笨重的開發(fā)、繁多的配置、低下的開發(fā)效率、復(fù)雜的部署流程、第三方技術(shù)集成難度大。
<font color="blue" size="4.5px">解決</font>:

  • “Spring全家桶”時(shí)代
  • SpringBoot -》J2EE一站式解決方案
  • Spring Cloud -》分布式整體解決方案
    在這里插入圖片描述

    <font color="blue" size="4.5px">優(yōu)點(diǎn)</font>:
  • 快速創(chuàng)建獨(dú)立運(yùn)行的Spring項(xiàng)目以及與主流框架集成
  • 使用嵌入式的Servlet容器,應(yīng)用無需打成war包
  • starters自動(dòng)依賴與版本控制
  • 大量的自動(dòng)配置,簡(jiǎn)化開發(fā),也可以使用默認(rèn)值
  • 無需配置XML,無代碼生成,開箱即用
  • 準(zhǔn)生產(chǎn)環(huán)境的運(yùn)行時(shí)應(yīng)用監(jiān)控
  • 與云計(jì)算的天然集成

二、環(huán)境準(zhǔn)備

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

三、Spring Boot HelloWorld

<font color="blue" size="3px">測(cè)試功能</font>:瀏覽器發(fā)送hello請(qǐng)求,服務(wù)器接受請(qǐng)求并處理,響應(yīng)Hello World字符串。

1. 創(chuàng)建一個(gè)maven工程;(jar)

image.png
image.png
image.png

2. 導(dǎo)入SpringBoot相關(guān)的依賴

image.png

3.編寫一個(gè)主程序;啟動(dòng)Spring Boot應(yīng)用

在這里插入圖片描述

4.編寫相關(guān)的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.啟動(dòng)測(cè)試

在這里插入圖片描述

在這里插入圖片描述

6.簡(jiǎn)化部署

  1. 在pom.xml中添加一個(gè)插件依賴


    在這里插入圖片描述

    2.選擇pakage方法進(jìn)行打包


    在這里插入圖片描述

    3.將打包好的jar,用cmd命令行運(yùn)行部署
    在這里插入圖片描述

四、HelloWorld探究

1.POM文件

  1. 父項(xiàng)目
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.1.5.RELEASE</version>
    </parent>
    
    他的父項(xiàng)目
    <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應(yīng)用里面的所有依賴版本;
    舉例如下:
    <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的版本仲裁中心;
以后我們導(dǎo)入依賴默認(rèn)是不需要寫版本;(沒有在dependencies里面管理的依賴自然需要寫版本)

2.導(dǎo)入的依賴

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
    </dependencies>
  1. spring-boot-starter:spring-boot場(chǎng)景啟動(dòng)器;幫我們導(dǎo)入了web模塊正常運(yùn)行所依賴的組件
  2. SpringBoot將所有的功能場(chǎng)景都抽取出來,做成一個(gè)個(gè)starters(啟動(dòng)器),只需要在項(xiàng)目里面引用這些starter相關(guān)場(chǎng)景的所有依賴就會(huì)導(dǎo)入進(jìn)來。要用什么功能,就導(dǎo)入什么starter。

2.主程序類

@SpringBootApplication
public class HelloWorldMainApplication {
    public static void main(String[] args) {
        //啟動(dòng)spring應(yīng)用
        SpringApplication.run(HelloWorldMainApplication.class,args);
    }
}
  1. @SpringBootApplication:Spring Boot應(yīng)用標(biāo)注在某個(gè)類上說明這個(gè)類是SpringBoot的主配置類,SpringBoot就應(yīng)該運(yùn)行這個(gè)類的main方法來啟動(dòng)SpringBoot應(yīng)用
@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. @SpringBootCon?guration:Spring Boot的配置類;
    標(biāo)注在某個(gè)類上,表示這是一個(gè)Spring Boot的配置類;

    @Con?guration:配置類上來標(biāo)注這個(gè)注解;
    配置類 ----- 配置文件;配置類也是容器中的一個(gè)組件;@Component

  2. @EnableAutoCon?guration:開啟自動(dòng)配置功能;
    以前我們需要配置的東西,Spring Boot幫我們自動(dòng)配置;@EnableAutoCon?guration告訴SpringBoot開啟自 動(dòng)配置功能;這樣自動(dòng)配置才能生效;

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

  1. @AutoCon?gurationPackage:自動(dòng)配置包
    @Import(AutoCon?gurationPackages.Registrar.class):
    Spring的底層注解@Import,給容器中導(dǎo)入一個(gè)組件;導(dǎo)入的組件由 AutoCon?gurationPackages.Registrar.class;
    將主配置類(@SpringBootApplication標(biāo)注的類)的所在包及下面所有子包里面的所有組件掃描到Spring容器

  2. 給容器中導(dǎo)入組件?
    EnableAutoCon?gurationImportSelector:導(dǎo)入哪些組件的選擇器;
    將所有需要導(dǎo)入的組件以全類名的方式返回;這些組件就會(huì)被添加到容器中;

    會(huì)給容器中導(dǎo)入非常多的自動(dòng)配置類(xxxAutoCon?guration);就是給容器中導(dǎo)入這個(gè)場(chǎng)景需要的所有組件, 并配置好這些組件;


    在這里插入圖片描述
  3. Spring Boot在啟動(dòng)的時(shí)候從類路徑下的META-INF/spring.factories中獲取EnableAutoCon?guration指定的值,將 這些值作為自動(dòng)配置類導(dǎo)入到容器中,自動(dòng)配置類就生效,幫我們進(jìn)行自動(dòng)配置工作;以前我們需要自己配置的東 西,自動(dòng)配置類都幫我們;
    J2EE的整體整合解決方案和自動(dòng)配置都在spring-boot-autocon?gure-1.5.9.RELEASE.jar

五、使用Spring Initializer快速創(chuàng)建SpringBoot

在這里插入圖片描述

在這里插入圖片描述

在這里插入圖片描述
  1. 主程序已經(jīng)生成好了,我們只需要我們自己的邏輯
  2. resources文件夾中目錄結(jié)構(gòu) static:保存所有的靜態(tài)資源; js css images; templates:保存所有的模板頁面;(Spring Boot默認(rèn)jar包使用嵌入式的Tomcat,默認(rèn)不支持JSP頁 面);可以使用模板引擎(freemarker、thymeleaf); application.properties:Spring Boot應(yīng)用的配置文件;可以修改一些默認(rèn)設(shè)置;
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • https://github.com/cuzz1/springboot-learning 一、Spring Boo...
    cuzz_閱讀 3,576評(píng)論 1 6
  • SpringMVC原理分析 Spring Boot學(xué)習(xí) 5、Hello World探究 1、POM文件 1、父項(xiàng)目...
    jack_jerry閱讀 1,490評(píng)論 0 1
  • https://github.com/cuzz1/springboot-learning 四、Web開發(fā) 1、簡(jiǎn)介...
    cuzz_閱讀 2,514評(píng)論 0 5
  • SpringBoot基礎(chǔ) 學(xué)習(xí)目標(biāo): 能夠理解Spring的優(yōu)缺點(diǎn) 能夠理解SpringBoot的特點(diǎn) 能夠理解S...
    dwwl閱讀 5,527評(píng)論 4 81
  • springBoot初級(jí)入門 獲取配置文件中的值@ConfigurationProperties 1、這個(gè)注解默認(rèn)...
    愛撒謊的男孩閱讀 1,789評(píng)論 1 10

友情鏈接更多精彩內(nèi)容