1. 程式人生 > 其它 >SpringBoot良心教程(三)一篇入門HelloWorld

SpringBoot良心教程(三)一篇入門HelloWorld

1、Maven配置

SpringBoot官方要求maven3.5以上 & Java8

$ mvn -v
Apache Maven 3.5.4 (1edded0938998edf8bf061f1ceb3cfdeccf443fe; 2018-06-17T14:33:14-04:00)
Maven home: /usr/local/Cellar/maven/3.3.9/libexec
Java version: 1.8.0_102, vendor: Oracle Corporation
$ java -version
java version "1.8.0_102"
Java(TM) SE Runtime Environment (build 1.8.0_102-b14)
Java HotSpot(TM) 64-Bit Server VM (build 25.102-b14, mixed mode)

首先在cmd通過maven-vjava -version確定maven版本和Java版本有沒有問題,然後在maven安裝路徑如D:\Software\DevelopmentTools\apache-maven-3.8.1\conf找到settings檔案,將以下配置放入檔案,之前配置過就修改,沒配置過就直接貼上。
配置後maven下載依賴時使用阿里雲的國內映象,下載速度快,maven編譯專案時使用jdk1.8

<mirrors>
      <mirror>
        <id>nexus-aliyun</id>
        <mirrorOf>central</mirrorOf>
        <name>Nexus aliyun</name>
        <url>http://maven.aliyun.com/nexus/content/groups/public</url>
      </mirror>
  </mirrors>
 
  <profiles>
         <profile>
              <id>jdk-1.8</id>
              <activation>
                <activeByDefault>true</activeByDefault>
                <jdk>1.8</jdk>
              </activation>
              <properties>
                <maven.compiler.source>1.8</maven.compiler.source>
                <maven.compiler.target>1.8</maven.compiler.target>
                <maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion>
              </properties>
         </profile>
  </profiles>

2、編寫HelloWorld

需求

瀏覽傳送/hello請求,響應Hello,SpringBoot2。

老方法

如果是使用之前的Servlet方式,首先要建立一個web專案,匯入Spring,SpringMVC等一大堆依賴,然後編寫Spring、SpringMVC的一大堆配置檔案,整合Spring和SpringMVC,寫完以後開發業務程式碼,然後再將整個應用部署到Tomcat伺服器上,然後啟動執行。

SpringBoot怎麼做(按照官方文件教程來一步一步做)

建立專案

建立一個maven工程,建立之前,先檢查maven,將maven改為自己下載的版本,不要用Bundled版本和idea外掛版。


而且要修改settings檔案的地址,點選Override,覆寫配置檔案地址,maven倉庫檔案可以使用預設的:

建立一個maven工程

在pom.xml檔案中匯入如下配置

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.example</groupId>
    <artifactId>myproject</artifactId>
    <version>0.0.1-SNAPSHOT</version>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.5.2</version>
    </parent>

    <!-- Additional lines to be added here... -->

</project>

加入starter-web

在pom.xml檔案中將配置貼上進去,然後更新maven依賴

之前開發web應用,需要新增spring,springMVC等等一大堆依賴,現在只需要新增一個spring-boot-starter-web依賴,就可以了,web場景啟動器

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

然後web開發需要的依賴,就都匯入進去了

業務開發

建立一個Java類

package com.shuwei.boot;


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

/**
 * 主程式類
 * @SpringBootApplication:表明這是一個SpringBoot應用
 */
@SpringBootApplication
public class MainApplication {
    public static void main(String[] args) {
        SpringApplication.run(MainApplication.class,args); //固定寫法
    }
}

然後再建立一個controller類,叫做HelloController,放在boot包裡

@Controller
public class controller {

    @ResponseBody //表示要以字串的形式返回給瀏覽器
    @RequestMapping("/hello")
    public String handle01(){
        return "Hello, Spring Boot 2!";
    }
}

/hello請求的邏輯就寫完了,可能一個類裡面要處理很多個請求,都是要給瀏覽器返回字串,那直接將@ResponseBody註解寫在類上,和@Controller同級的位置,表示這個類的每一個方法返回的資料都是直接寫給瀏覽器的,而不是跳轉到某個頁面。另:@ResponseBody用法詳解,SpringBoot有一個新註解,叫做@RestController,其實就是@ResponseBody@Controller的結合,這樣就可以改為:

//@Controller
//@ResponseBody
@RestController
public class controller {

    @ResponseBody
    @RequestMapping("/hello")
    public String handle01(){
        return "Hello, Spring Boot 2!";
    }
}

進入@RestController,可以看到就是@ResponseBody@Controller的結合

//
// Source code recreated from a .class file by IntelliJ IDEA
// (powered by FernFlower decompiler)
//

package org.springframework.web.bind.annotation;

import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
import org.springframework.core.annotation.AliasFor;
import org.springframework.stereotype.Controller;

@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Controller //這裡
@ResponseBody //這裡
public @interface RestController {
    @AliasFor(
        annotation = Controller.class
    )
    String value() default "";
}

啟動

只需要回到MainApplication.class,點選綠色三角,即可執行

然後,可以看到,tomcat服務已經起來了,然後在瀏覽器輸入localhost:8080/hello

SpringBoot的身份是一個整合者,目的是要簡化配置,整合用到的一系列配置,可以通過在resources下新建application.properties檔案,來抽取配置,完成對很多東西的配置,比如在檔案內寫入server.port=8888,重啟以後,埠就變為8888了,非常方便。

那究竟可以寫入哪些配置呢,官方文件給出了詳盡的說明。可以找到我們之前寫入的server.port

之前的web開發,我們需要將寫好的程式碼打成war包,SpringBoot簡化了這一操作,可以將應用直接打成可執行jar包(Executable jars),官方稱為"fat jars",因為這個jar包很大,裡面有一整套的執行環境。首先我們遵照官方文件,在pom檔案中加入外掛程式碼:

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

然後開啟maven,打包專案,按住ctrl多選clean和package,然後點選綠色箭頭

打包成功以後,開啟jar包所在資料夾,idea版本不同,有的為Show in explorer

在導航欄直接輸入cmd,即在當前路徑下開啟cmd

執行java -jar boot-01-helloworld-1.0-SNAPSHOT.jar,效果和在idea啟動是一樣的。

總結

SpringBoot的好處:
  1. 簡化配置,開箱即用,很多配置直接寫在application.properties中
  2. 簡化部署,一鍵啟動,再也不需要在目標伺服器安裝一大堆東西,比如tomcat,只需要在SpringBoot中引入一個外掛,把專案打成jar包即可,直接在目標伺服器執行即可。
注意點:
  • 如果jar包的方式,服務沒起來,可能是因為cmd視窗開了快速編輯模式,在服務啟動過程,你點一下螢幕的位置,游標就會卡在那裡,在cmd標題欄右鍵屬性,把這個關掉即可。
  • 如果在idea中,服務啟動時,提示缺少xxx依賴,說明有些依賴沒有下載完,將網路調整好,阿里雲mirror設定好(非必須,但調整後下載速度能快一點),在maven中點選重新整理,就可以將沒有下載好的依賴下載進來,第一次使用SpringBoot,需要耐心一點,下載的jar包比較多。

    用壓縮軟體開啟之前打包的jar包,可以看到,裡面東西非常多,一整套執行環境都在裡面。

    BOOT-INF/lib中,可以看到有很多jar包,其中就有tomcat-embed,說明打成的這個jar包,SpringBoot已經幫我們內嵌了Tomcat,以及依賴的所有jar包

    我們自己寫的邏輯在這裡:boot-01-helloworld-1.0-SNAPSHOT.jar\BOOT-INF\classes\com\shuwei\boot\boot

以上就是我們使用SpringBoot開發HelloWorld的全部內容啦,有疑問的同學可以留言給我哦,本教程持續更新,敬請關注~