Spring Boot入門

1、Spring Boot

一、什麼是Spring Boot?

  Spring Boot 是一個框架,其用來簡化 Spring 應用的初始化搭建以及開發過程。其使用特定的方式來配置,使開發人員減小配置操做。相似於 maven 整合 jar 包,Spring Boot 整合了框架。
  官網:https://spring.io/projects/spring-boot/css

二、未使用 Spring Boot 時配置一個 Spring Web 項目的操做

(1)配置 web.xml 文件,加載 Spring,Spring MVC(未使用 maven 時,還要手動導入 jar 包)。
(2)配置數據庫鏈接。
(3)開啓註解。
(4)........
(5)部署到 Tomcat 容器中進行調試。
 使用了SpringBoot後,你將體會到什麼叫日了狗了,真他喵的簡單。html

三、單體應用與微服務

(1)單體應用:
  指的是一個單體應用程序,將其全部的功能放在一個進程中處理,在服務器上覆制這個單體進行擴展。簡單的講就是將全部的功能模塊都使用一個項目來處理,而後打成war包,發佈到服務器上(在不一樣的服務器上部署一樣的程序,從而提升併發能力)。
注意:可能修改某個部分時,使得整個程序須要從新部署才行,是一個牽一髮而動全身的問題。java

(2)微服務:(屬於一種架構風格)
  微服務架構是將每個功能模塊分別放進到一個獨立的服務中,而且經過跨服務器分發這些服務進行擴展,只在有須要時才複製。一個應用應該是一組小型服務,能夠經過HTTP的方式來互通。
注意:修改某部分時,只須要從新部署修改的功能模塊那個微服務便可。每個功能模塊都是可獨立替換和獨立維護的軟件單元,徹底體現了高可複用性,高可維護性,高可擴展性。web

四、Spring與微服務

(1)Spring Boot能夠快速構建一個應用。
  簡化Spring應用和服務的建立、開發與部署,簡化了配置文件,使用嵌入式web服務器,含有諸多開箱即用的微服務功能,能夠和spring cloud聯合部署。核心思想是約定大於配置,應用只須要不多的配置便可,簡化了應用開發模式。spring

(2)Spring Cloud在分佈式中創建鏈接。
  是一套完整的微服務解決方案,是一系列不一樣功能的微服務框架的集合。Spring Cloud基於Spring Boot,簡化了分佈式系統的開發,集成了服務發現、配置管理、消息總線、負載均衡、斷路器、數據監控等各類服務治理能力。好比sleuth提供了全鏈路追蹤能力,Netflix套件提供了hystrix熔斷器、zuul網關等衆多的治理組件。config組件提供了動態配置能力,bus組件支持使用RabbitMQ、kafka、Activemq等消息隊列,實現分佈式服務之間的事件通訊。數據庫

(3)Spring Cloud Date Flow處理數據。apache

 

2、使用IDEA構建一個SpringBoot

一、方法1:

  step1:進入網址:http://start.spring.io/
  step2:選擇相關信息,以下圖:windows

 

  step3:點擊Generate the project, 能夠下載項目壓縮包.
  step4:解壓項目後,使用IDEA導入。瀏覽器

File -> New -> Model from Existing Source.. -> 選擇解壓後的文件夾 -> OK,
選擇 Maven 無腦 Next,OK done!(固然,根據須要,能夠適當作些改變)

 

可能會出現錯誤的狀況。緣由是沒有相關的依賴信息(jar包),等待後臺聯網下載便可。tomcat

 

二、方法2

  step1: 選擇 File -> New —> Project… 彈出新建項目的框
  step2: 選擇 Spring Initializr,Next 也會出現上述相似的配置界面,Idea 幫咱們作了集成
  step3: 填寫相關內容後,點擊 Next 選擇依賴的包再點擊 Next,最後肯定信息無誤點擊 Finish。

 

三、構建第一個Spring Boot程序(HelloWorld)

(1)構建啓動Spring的主類

【HelloWorldApplication.java】
package com.test.application;

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

/**
 * @SpringBootApplication 用於標註一個主程序類,說明其爲一個SpringBoot應用
 */
@SpringBootApplication
public class HelloWorldApplication {
    public static void main(String[] args){
        // 用於啓動一個Spring應用
        SpringApplication.run(HelloWorldApplication.class, args);
    }
}

(2)構建一個Controller類

package com.example.helloworld.controller;

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

@Controller
public class HelloWorldController {

    @ResponseBody
    @RequestMapping("/hello")
    public String show(){
        return "Hello World";
    }
}

(3)開啓服務

 

(4)啓動異常問題:
question1:
  出現 java.net.BindException: Address already in use. 異常。多是端口被佔用。

先查詢是哪一個進程佔用了,若能直接殺死最好,不行的話,能夠修改默認端口號(後續再介紹)。
  windows查詢端口號以及進程:
    WIN + R 敲cmd打開命令行。
      輸入:netstat -aon|findstr 端口號
      輸出的是端口號以及其PID。
      輸入:tasklist | findstr PID
      輸出的是佔用端口號的進程。
      輸入:taskkill /f /t /im 進程名 (用於結束進程) 

 

question2:
  springboot啓動後訪問不到controller:
    當啓動springboot時@SpringBootApplication註解會去自動掃描當前目錄和其子目錄,若是controller層不在子目錄則掃描不到。因此將其配置到子目錄中。

 

(5)測試路徑:(至此,測試完成)

https://localhost:8080/hello

 

(6)建立可執行的jar文件。須要在pom.xml中添加插件信息(按上述兩種方法新建的項目都自動配置了)。

【插件配置信息】
<!-- 將應用打包成一個可執行的jar包 -->
<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>
    </plugins>
</build>

【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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.1.6.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.example</groupId>
    <artifactId>helloworld</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>war</packaging>
    <name>helloworld</name>
    <description>Demo project for Spring Boot</description>

    <properties>
        <java.version>1.8</java.version>
    </properties>

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

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-tomcat</artifactId>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

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

</project>

將項目打包。

 

 

找到打包後的文件,拷貝到某個路徑下,此處我拷貝到(E:\JAVA)。
進入路徑,並執行 java -jar 包名,便可啓動Spring,經過瀏覽器能夠訪問。

 

(7)目錄結構
  static:用於保存靜態資源,好比css,html,image等。
  templates:保存模板頁面,因爲SpringBoot使用嵌入式的tomcat,不推薦使用JSP(使用jsp會失去springboot的一些特性),若是想寫JSP,可使用模板引擎(好比:freemarker, thymeleaf)。
  application.properties:用來修改默認的配置信息。

相關文章
相關標籤/搜索