天天看點

Spring Boot 簡單介紹和 HelloWorld 入門HelloWorld 2、導入spring boot相關的依賴    </dependencies>  3、編寫一個主程式;啟動Spring Boot應用4、編寫相關的Controller、Service5、運作主程式測試Hello World探究 1、POM檔案1、父項目 3、主程式類,主入口類 

一、簡介

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

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

解決:“Spring全家桶”時代。 Spring Boot  J2EE一站式解決方案 Spring Cloud  分布式整體解決方案

二 、優點

優點: – 快速建立獨立運作的Spring項目以及與主流架構內建 – 使用嵌入式的Servlet容器,應用無需打成WAR包 – starters自動依賴與版本控制 – 大量的自動配置,簡化開發,也可修改預設值 – 無需配置XML,無代碼生成,開箱即用 – 準生産環境的運作時應用監控 – 與雲計算的天然內建

單體應用

Spring Boot 簡單介紹和 HelloWorld 入門HelloWorld 2、導入spring boot相關的依賴    </dependencies>  3、編寫一個主程式;啟動Spring Boot應用4、編寫相關的Controller、Service5、運作主程式測試Hello World探究 1、POM檔案1、父項目 3、主程式類,主入口類 

微服務應用

Spring Boot 簡單介紹和 HelloWorld 入門HelloWorld 2、導入spring boot相關的依賴    </dependencies>  3、編寫一個主程式;啟動Spring Boot應用4、編寫相關的Controller、Service5、運作主程式測試Hello World探究 1、POM檔案1、父項目 3、主程式類,主入口類 
  • Spring Boot 用于快速開發微服務中的各個功能/小型服務
  • Spring Cloud 用于将各個功能/小型服務連接配接起來
  • Spring Cloud Data Flow 用于處理服務之間的資料

HelloWorld

功能說明:編寫一個web應用,浏覽器輸入"localhost:8080/hello"後,背景傳回"hello world"字元串輸出

建立Maven項目

Spring Boot 簡單介紹和 HelloWorld 入門HelloWorld 2、導入spring boot相關的依賴    </dependencies>  3、編寫一個主程式;啟動Spring Boot應用4、編寫相關的Controller、Service5、運作主程式測試Hello World探究 1、POM檔案1、父項目 3、主程式類,主入口類 
Spring Boot 簡單介紹和 HelloWorld 入門HelloWorld 2、導入spring boot相關的依賴    </dependencies>  3、編寫一個主程式;啟動Spring Boot應用4、編寫相關的Controller、Service5、運作主程式測試Hello World探究 1、POM檔案1、父項目 3、主程式類,主入口類 
Spring Boot 簡單介紹和 HelloWorld 入門HelloWorld 2、導入spring boot相關的依賴    </dependencies>  3、編寫一個主程式;啟動Spring Boot應用4、編寫相關的Controller、Service5、運作主程式測試Hello World探究 1、POM檔案1、父項目 3、主程式類,主入口類 

 2、導入spring boot相關的依賴 

    <parent>         

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

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

       <version>1.5.9.RELEASE</version>     

   </parent>     

   <dependencies>        

        <dependency>            

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

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

    </dependency>     

   </dependencies>

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

   @SpringBootApplication

 public class HelloWorldMainApplication {       

 public static void main(String[] args) {

          // Spring應用啟動起來

        SpringApplication.run(HelloWorldMainApplication.class,args);   

    }

}

4、編寫相關的Controller、Service

@Controller

public class HelloController {

@ResponseBody

@RequestMapping("/hello")

public String hello(){

    return "Hello World!";

   }

Spring Boot 簡單介紹和 HelloWorld 入門HelloWorld 2、導入spring boot相關的依賴    &lt;/dependencies&gt;  3、編寫一個主程式;啟動Spring Boot應用4、編寫相關的Controller、Service5、運作主程式測試Hello World探究 1、POM檔案1、父項目 3、主程式類,主入口類 

5、運作主程式測試

6、簡化部署 

Spring Boot提供了如下插件可以将整個Spring Boot應用(即使是Java Web應用)打包成一個可執行Jar檔案,于是以後可以直接輕按兩下就能運作,簡化了web應用部署

插件代碼

<build>

        <plugins>

            <!-- spring-boot-maven-plugin插件:可以将應用打包成一個可執行的jar包;-->

            <plugin>

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

                <artifactId>spring-boot-maven-plugin</artifactId>

            </plugin>

        </plugins>

    </build>

注意切換到下面截圖的左下角圖示,這樣子右邊的Maven Project才會出來

Spring Boot 簡單介紹和 HelloWorld 入門HelloWorld 2、導入spring boot相關的依賴    &lt;/dependencies&gt;  3、編寫一個主程式;啟動Spring Boot應用4、編寫相關的Controller、Service5、運作主程式測試Hello World探究 1、POM檔案1、父項目 3、主程式類,主入口類 

可以運作"package"将應用打包到IDEA工作目錄下,也可以運作"install"将應用打包到Maven本地倉庫下

package指令打好的jar包放在target目錄下面

Spring Boot 簡單介紹和 HelloWorld 入門HelloWorld 2、導入spring boot相關的依賴    &lt;/dependencies&gt;  3、編寫一個主程式;啟動Spring Boot應用4、編寫相關的Controller、Service5、運作主程式測試Hello World探究 1、POM檔案1、父項目 3、主程式類,主入口類 

1、運作方式一:直接輕按兩下可執行 jar 包 "helloWorld-1.0-SNAPSHOT.jar" 運作應用程式。此時在任務管理器可以看到 "javaw.exe" 的程序,結束此程序即可關閉應用程式

2、運作方式二:指令行使用 "java -jar ****.jar" 運作應用程式。此時可以看到應用啟動資訊,也可以看到應用輸出的所有資訊,就相當于Tomcat的啟動小黑視窗,關閉指令行視窗即可關閉應用程式

應用中自己編寫的類以及所有依賴的jar包全部打包到了下面的 "helloWorld-1.0-SNAPSHOT.jar" 中,其中就包括了內建的Tomcat伺服器

可以複制出來放在桌面上面,然後cmd進入桌面目錄,然後執行java -jar指令,效果和啟動springbot應用一樣

Spring Boot 簡單介紹和 HelloWorld 入門HelloWorld 2、導入spring boot相關的依賴    &lt;/dependencies&gt;  3、編寫一個主程式;啟動Spring Boot應用4、編寫相關的Controller、Service5、運作主程式測試Hello World探究 1、POM檔案1、父項目 3、主程式類,主入口類 

Hello World探究 

1、POM檔案

1、父項目 

按住ctrl+滑鼠左鍵點選<artifactId>spring‐boot‐starter‐parent</artifactId>就可以進入

<parent>

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

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

<version>1.5.9.RELEASE</version> </parent>

 他的父項目是

<parent>

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

<artifactId>spring‐boot‐dependencies</artifactId>

<version>1.5.9.RELEASE</version>

<relativePath>../../spring‐boot‐dependencies</relativePath>

</parent>

他來真正管理Spring Boot應用裡面的所有依賴版本; 

Spring Boot的版本仲裁中心;

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

2、啟動器 

添加應用需要的starter子產品,作為示例,我們僅添加web starter子產品。

  這裡需要解釋下starter子產品,簡單的說,就是一系列的依賴包組合。例如web starter子產品,就是包含了Spring Boot預定義的一些Web開發的常用依賴:

      spring-boot-starter-web:

      spring-boot-starter:spring-boot場景啟動器;幫我們導入了web子產品正常運作所依賴的元件;

      Spring Boot将所有的功能場景都抽取出來,做成一個個的starters(啟動器),隻需要在項目裡面引入這些starter 相關場景

      的所有依賴都會導入進來。要用什麼功能就導入什麼場景的啟動器

○ spring-web, spring-webmvc            Spring WebMvc架構

○ tomcat-embed-*                              内嵌Tomcat容器

○ jackson                                             處理json資料

○ spring-*                                            Spring架構

○ spring-boot-autoconfigure             Spring Boot提供的自動配置功能

換句話說,當你添加了相應的starter子產品,就相當于添加了相應的所有必須的依賴包。

3、主程式類,主入口類 

@SpringBootApplication

public class HelloWorldMainApplication {

  public static void main(String[] args) {   // Spring應用啟動起來

SpringApplication.run(HelloWorldMainApplication.class,args);

     }

@SpringBootApplication: Spring Boot應用标注在某個類上說明這個類是SpringBoot的主配置類,SpringBoot 就應該運作這個類的main方法來啟動SpringBoot應用

@SpringBootApplication是由下面的配置組合起來的起來的,可以點選去看一下

@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:Spring Boot的配置類;

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

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

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

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

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

進入@EnableAutoConfiguration檢視

@AutoConfigurationPackage

@Import(EnableAutoConfigurationImportSelector.class)

public @interface EnableAutoConfiguration {

  @AutoConfigurationPackage:自動配置包

  @Import(AutoConfigurationPackages.Registrar.class):

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

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

  @Import(EnableAutoConfigurationImportSelector.class);

 給容器中導入元件?

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

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

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

Spring Boot 簡單介紹和 HelloWorld 入門HelloWorld 2、導入spring boot相關的依賴    &lt;/dependencies&gt;  3、編寫一個主程式;啟動Spring Boot應用4、編寫相關的Controller、Service5、運作主程式測試Hello World探究 1、POM檔案1、父項目 3、主程式類,主入口類 

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

 SpringFactoriesLoader.loadFactoryNames(EnableAutoConfiguration.class,classLoader);

  Spring Boot在啟動的時候從類路徑下的META-INF/spring.factories中擷取EnableAutoConfiguration指定的值,将 這些值作為自動配置類導入到容器中,自動配置類就生效,幫我們進行自動配置工作;以前我們需要自己配置的東 西,自動配置類都幫我們;

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

Spring注解版(谷粒學院)