學習Spring Boot:(一)入門


微服務

現在微服務越來越火了,Spring Boot熱度蹭蹭直升,自學下。

微服務其實是服務化思路的一種最佳實踐方向,遵循SOA(面向服務的架構)的思路,各個企業在服務化治理上面的道路已經走得很遠了,整個軟件交付鏈上各個環節的基礎設施逐漸成熟了,微服務就誕生了。

微服務給我們也帶來了很多挑戰,服務“微”化之后,一個顯著的特征就是服務的數量增多了。如果將軟件開發和交付也作為一種生產模式的看待,那么數量眾多的微服務實際上就類似於傳統生產線上的產品,而在傳統生產模式下,為了能夠高效地生產大量產品,通常采用的就是標准化生產。

學習

Spring Boot只是簡化了spring 全家桶的配置,它使用“習慣優於配置”(Convention Over Configuration 項目中存在大量的配置,此外還內置了一個習慣性的配置,讓你無需手動進行配置)的理念讓你的項目快速運行起來。使用Spring Boot很容易創建一個獨立運行(運行jar,內嵌Servlet容器)、准生產級別的基於Spring框架的項目,使用Spring Boot你可以不用或者只需要很少的Spring配置。

核心

  • 自動配置:針對很多Spring應用程序常見的應用功能,Spring Boot能自動提供相關配置。
  • 起步依賴:告訴Spring Boot需要什么功能,它就能引入需要的庫。
  • 命令行界面:這是Spring Boot的可選特性,借此你只需寫代碼就能完成完整的應用程序,無需傳統項目構建。
  • Actuator:讓你能夠深入運行中的Spring Boot應用程序,一探究竟。

入門:搭建一個Spring Boot Web

初始化

我是使用的IDEA,它已經集成了Spring Boot。
選擇file - 新建一個項目,選擇Spring Initializr
注意我選擇的jdk 是1.8 ,推薦使用1.8 ,好像低版本的1.5 、1.6有限制,還有就是現在最新版本1.5.9的Spring Boot還不支持jdk9。

next -》 next
選擇Spring Boot 版本,選擇需要的模塊,我們開始學習就使用默認的Web模塊。

結構

初始化完成后,會生成幾個文件,項目結構:
image

  • pom.xml:Maven構建說明文件。
  • *Application:帶有main()方法的類,用於啟動應用程序。
  • *ApplicationTests:一個空的Junit測試類,它加載了一個使用Spring Boot字典配置功能的Spring應用程序上下文。
  • application.properties:一個空的properties文件,用於配置項目的相關屬性。
  • static存放相關靜態文件;
  • template 存放模板渲染文件。

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>

    <groupId>com.wuwii</groupId>
    <artifactId>learn-spring-boot</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>jar</packaging>

    <name>learn-spring-boot</name>
    <description>Demo project for Spring Boot</description>

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

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <java.version>1.8</java.version>
    </properties>

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

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <scope>runtime</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
    </dependencies>

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


</project>
使用的是Spring Boot父級依賴

,spring-boot-starter-parent是一個特殊的starter,它用來提供相關的Maven默認依賴,使用它之后,常用的包依賴可以省去version標簽。

起步依賴 spring-boot-starter-xx

Spring Boot提供了很多”開箱即用“的依賴模塊,都是以spring-boot-starter-xx作為命名的。舉個例子來說明一下這個起步依賴的好處,比如組裝台式機和品牌機,自己組裝的話需要自己去選擇不同的零件,最后還要組裝起來,期間有可能會遇到零件不匹配的問題。耗時又消力,而品牌機就好一點,買來就能直接用的,后續想換零件也是可以的。相比較之下,后者帶來的效果更好點(這里就不討論價格問題哈),起步依賴就像這里的品牌機,自動給你封裝好了你想要實現的功能的依賴。就比如我們之前要實現web功能,引入了spring-boot-starter-web這個起步依賴。

起步依賴本質上是一個Maven項目對象模型(Project Object Model,POM),定義了對其他庫的傳遞依賴,這些東西加在一起即支持某項功能。很多起步依賴的命名都暗示了它們提供的某種或者某類功能。

Spring Boot Maven插件
<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>
    </plugins>
</build>
  • 把項目打包成一個可執行的超級JAR(uber-JAR),包括把應用程序的所有依賴打入JAR文件內,並為JAR添加一個描述文件,其中的內容能讓你用java -jar來運行應用程序。
  • 搜索public static void main()方法來標記為可運行類。

運行

現在添加一個接口,來啟動項目運行:

package com.wuwii.learnspringboot;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@SpringBootApplication
public class LearnSpringBootApplication {

    @RequestMapping("/")
    public String index() {
        return "Hello World";
    }
    public static void main(String[] args) {
        SpringApplication.run(LearnSpringBootApplication.class, args);
    }
}

啟動方式

  • @SpringBootApplication是Sprnig Boot項目的核心注解,主要目的是開啟自動配置。后續講解原理的時候再深入介紹。main方法這是一個標准的Java應用的main的方法,主要作用是作為項目啟動的入口,直接運行它的main() 函數。
  • 使用命令 mvn spring-boot:run”在命令行啟動該應用,IDEA中該命令在如下位置:

    • 運行“mvn package”進行打包時,會打包成一個可以直接運行的 JAR 文件,使用“java -jar”命令就可以直接運行。

總結

  • 了解Spring Boot 的基本結構和相關屬性的概念;
  • 啟動和運行方式。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM