SpringBoot入門---史上最詳細

特性:

1.幫助開發者快速整合第三方常用框架

2.完全不需要外部服務器運行,內嵌入服務器,原理Java語言創建tomcat

3.完全採用註解形式替代了XML,原理因爲Spring體系本身支持註解啓動,只是做了包裝

優點:

快速創建獨立運行的Spring項目以及與主流框架集成

使用嵌入式的Servlet容器,應用無需打成WAR包

starters自動依賴與版本控制

大量的自動配置,簡化開發,也可以修改默認值

無需配置XML,無代碼生成,開箱即用

準生產環境的運行時監控

與雲計算的天然集成

 

微服務:

架構風格

一個應用應該是一組小型服務,可以通過HTTP的方式進行互通。

單體應用:

一個單體應用程序把它所有的功能放在一個單一進程中

一個微服務架構把每個功能元素放進一個獨立的服務中

並且通過在多個服務器上覆制這個單元進行擴展

並且通過跨服務器分發這些服務進行擴展,只在需要時才複製

每一個功能元素最終都是一個可獨立替換和獨立升級的軟件單元

 

環境準備:

IDEA配置MAVEN:

 

HelloWorld:

創建maven工程

導入maven依賴:

<parent>

      <groupId>org.springframework.boot</groupId>

      <artifactId>spring-boot-starter-parent</artifactId>

      <version>1.5.7.RELEASE</version>

</parent>

<dependencies>

     <dependency>

          <groupId>org.springframework.boot</groupId>

          <artifactId>spring-boot-starter-web</artifactId>

    </dependency>

</dependencies>

主程序:

package com.huawei.springboot;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class Springboot04Application {

    public static void main(String[] args) {
        SpringApplication.run(Springboot04Application.class, args);
    }

}

編寫相關的Controller:

package com;

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class HelloApp {

    @RequestMapping("/hello")
    public String hello(){
        return "Hello wolrd new !";
    }
}

瀏覽器輸入對應的地址:

http://localhost:8080/hello

部署:

這個插件,可以將應用打包成一個可執行的jar包

導入maven插件:

 <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

點擊IDEA的右下角,出現右側可以打maven工程jar包的一欄

 

打成的jar包包含:

點擊clean然後點擊package或者install,會在target目錄打成一個jar包

在命令行jar包目錄輸入如:   java  -jar SpringBootTest-1.0-SNAPSHOT.jar

在瀏覽器中輸入訪問地址:http://localhost:8080/hello

結果一樣:

POM依賴分析:

父項目;

<parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.2.4.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>

他的父項目是:

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-dependencies</artifactId>
    <version>2.2.4.RELEASE</version>
    <relativePath>../../spring-boot-dependencies</relativePath>
  </parent>

它來真正管理Springboot應用裏面的所有依賴版本;

以後我們導入依賴默認是不需要寫版本;

啓動器:

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

spring-boot-starter-web:

springboot場景啓動器;幫我們導入了web模塊正常運行所依賴的組件;

Spring Boot將所有的功能場景都抽取出來,做成一個個的starters啓動器,只需要在項目裏面引入這些starter相關場景的所有依賴都會導入進來。要用什麼功能就導入什麼場景的啓動器。

主程序類:

@SpringBootApplication:SpringBoot應用標註在某個類上說明這個類是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 {

@SpringBootConfiguration:SpringBoot的配置類:

標註在某個類上,表示這是 一個Springboot的配置類;

@Configuration:配置類上來標註這個註解;

配置類---配置文件

@EnableAutoConfiguration:開啓自動配置功能;

@AutoConfigurationPackage

@Import({EnableAutoConfigurationImportSelector.class})

public@interfaceEnableAutoConfiguration{

@AutoConfigurationPackage:自動配置包

@Import({EnableAutoConfigurationImportSelector.class}):

Spring的底層註解@Import,給容器中導入一個組件,導入的組件由AutoConfigurationPackage.Registrar.class;

將主配置類@SpringBootApplication標註的類的所在包及下面所有子包裏面的所有組件掃描到Spring容器;

@Import({EnableAutoConfigurationImportSelector.class})

給容器導入組件:EnableAutoConfigurationImportSelector,導入哪些選擇器

 

publicclassEnableAutoConfigurationImportSelectorextendsAutoConfigurationImportSelector{

AutoConfigurationImportSelector:

publicString[]selectImports(AnnotationMetadataannotationMetadata)

將所有需要導入的組件以全類名的方式返回;這些組件就會添加到容器中;

會給容器中導入非常多的自動配置類

List<String>configurations=this.getCandidateConfigurations(annotationMetadata,attributes);

有了自動配置類,免去了我們手動編寫配置注入功能組件等的工作;

SpringFactoriesLoader.loadFactoryNames(this.getSpringFactoriesLoaderFactoryClass(),this.getBeanClassLoader());

SpringBoot在啓動的時候從類路徑下的/META-INF/spring.factories 獲取EnableAutoConfiguration指定的值,將這些值作爲自動配置類導入打容器中,自動配置類就生效,幫我們進行自動配置工作.

J2EE的整體整合解決方案和自動配置都在

E:\apache-maven-3.3.9\repository\org\springframework\boot\spring-boot-autoconfigure\1.5.7.RELEASE\spring-boot-autoconfigure-1.5.7.RELEASE.jar

使用Spring Initializer快速創建SpringBoot項目:

IDEA:選擇我們需要的模塊;嚮導會聯網創建項目

默認生成的SpringBoot項目;

主程序已經生成好了,我們只需要寫自己的邏輯

resources文件夾中目錄結構

   static:保存所有的靜態資源;js css images;

    templates:保存所有的模塊頁面(SpringBoot默認jar包使用嵌入式的tomcat,默認不支持JSP頁面);可以使用模塊引擎(freemarker、thymeleaf);

application.properties:SpringBoot應用的配置文件;可以修改一些默認配置;

 application.properties文件裏修改端口號:

server.port=8081

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章