0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Spring Boot 的設(shè)計(jì)目標(biāo)

科技綠洲 ? 來(lái)源:Java技術(shù)指北 ? 作者:Java技術(shù)指北 ? 2023-10-13 14:56 ? 次閱讀

什么是Spring Boot

Spring Boot 是 Spring 開(kāi)源組織下的一個(gè)子項(xiàng)目,也是 Spring 組件一站式解決方案,主要是為了簡(jiǎn)化使用 Spring 框架的難度和簡(jiǎn)化 Spring 框架復(fù)雜的XML配置。使用 Spring Boot 可以很容易創(chuàng)建一個(gè)獨(dú)立運(yùn)行的、基于 Spring 的生產(chǎn)級(jí)應(yīng)用程序,而且Spring Boot 對(duì) Spring 平臺(tái)和第三方庫(kù)做了一些版本適配,這樣我們就可以盡快的上手。

使用 Spring Boot 來(lái)不僅可以創(chuàng)建基于 war 方式部署的傳統(tǒng)Java應(yīng)用程序,也可以通過(guò)創(chuàng)建獨(dú)立的不依賴任何容器(如 tomcat 等)的應(yīng)用,只需使用 “java -jar” 就能啟動(dòng)。Spring Boot 還提供了一個(gè)運(yùn)行 "spring scripts " 的命令行工具。

Spring Boot 的設(shè)計(jì)目標(biāo)

為所有的 Spring 開(kāi)發(fā)提供一個(gè)從根本上更快、更廣泛的入門(mén)體驗(yàn)。
開(kāi)箱即用,但當(dāng)需求開(kāi)始偏離默認(rèn)值時(shí),可以快速?gòu)闹薪夥懦鰜?lái)使用個(gè)性化的定制。
提供一系列大型應(yīng)用項(xiàng)目中經(jīng)常用到的公共的非功能特性(如嵌入式服務(wù)器、安全、度量、健康檢查和外部化配置)。
零代碼生成零XML配置。

第一個(gè) Spring Boot 應(yīng)用程序

我們?cè)趯W(xué)習(xí)一門(mén)新的開(kāi)發(fā)語(yǔ)言,或者開(kāi)發(fā)框架的時(shí)候,一般都習(xí)慣寫(xiě)個(gè) Hello World 的項(xiàng)目。一方面可以驗(yàn)證基礎(chǔ)環(huán)境的搭建是否正確,另一方面可以快速了解整個(gè)開(kāi)發(fā)流程?,F(xiàn)在我們創(chuàng)建一個(gè) Hello world 的 Spring Boot 項(xiàng)目。我這里使用的IDE 是 Intellij IDEA 。

第一步

打開(kāi)Intellij IDEA 使用 Spring Initializr 向?qū)?新建 Hello World的項(xiàng)目

圖片

選擇 Spring Web, 然后點(diǎn)擊 Finish 等待項(xiàng)目創(chuàng)建完成。

圖片

第二步

項(xiàng)目已經(jīng)創(chuàng)建完成。下面我們來(lái)看一下項(xiàng)目結(jié)構(gòu):

圖片

來(lái)看下 HelloApplication 入口類(lèi)的內(nèi)容, HelloApplication 里面定義了一個(gè) main 函數(shù),一個(gè)基本的 @SpringBootApplication 注解。后續(xù)的文章會(huì)詳細(xì)解釋一下 @SpringBootApplication 注解?,F(xiàn)在我們只要知道有了 @SpringBootApplication 注解,所有的 Spring Boot 項(xiàng)目依賴都可以掃描加入進(jìn)來(lái)。

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

再看一下 pom.xml 文件有那些依賴項(xiàng)目, POM 文件主要依賴了spring-boot-starter-web 項(xiàng)目,該項(xiàng)目包含了 web 項(xiàng)目所需的相關(guān)依賴,包括內(nèi)置了 tomcat 服務(wù)器。另外還有一個(gè)比較重要的插件 spring-boot-maven-plugin,方便我們可以對(duì) Spring Boot 項(xiàng)目打包成一個(gè)獨(dú)立運(yùn)行的 jar 包。

< ?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 >
    < parent >
        < groupId >org.springframework.boot< /groupId >
        < artifactId >spring-boot-starter-parent< /artifactId >
        < version >2.5.0< /version >
        < relativePath/ > < !-- lookup parent from repository -- >
    < /parent >
    < groupId >com.javanorth< /groupId >
    < artifactId >hello< /artifactId >
    < version >0.0.1-SNAPSHOT< /version >
    < name >hello< /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-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 >

第三步

修改 HelloApplication 主類(lèi),添加一個(gè)/hello 的請(qǐng)求

@RestController
@SpringBootApplication
public class HelloApplication {
    public static void main(String[] args) {
        SpringApplication.run(HelloApplication.class, args);
    }
    @GetMapping("/hello")
    public String hello() {
        return "Hello World";
    }
}

第四步

在主類(lèi)上,右鍵菜單欄里選擇 Run “HelloApplication” 命令,啟動(dòng)項(xiàng)目。如下圖所示,2秒鐘就能啟動(dòng)完成。從輸出日志可以看出,項(xiàng)目啟動(dòng)了內(nèi)置的 tomcat 服務(wù)器,分配了8080 作為本次 web 服務(wù)器的請(qǐng)求端口

圖片

好了,我們現(xiàn)在訪問(wèn)一下 /hello 請(qǐng)求, 如下圖所示,輸出了 Hello World。

圖片

是不是很簡(jiǎn)單,我們很快就上手完成了第一個(gè) Hello World 應(yīng)用。

第五步

我們?cè)賮?lái)看下,如何打包一個(gè) Spring Boot 項(xiàng)目呢?前文我們已經(jīng)提到了 spring-boot-maven-plugin 插件,所以我們可以使用mvn package 來(lái)對(duì)其進(jìn)行打包

$ mvn package 
[INFO] Scanning for projects...
[INFO] 
[INFO] ------------------------< com.javanorth:hello >-------------------------
[INFO] Building hello 0.0.1-SNAPSHOT
[INFO] --------------------------------[ jar ]---------------------------------
[INFO] ...
[INFO] --- maven-jar-plugin:3.2.0:jar (default-jar) @ hello ---
[INFO] Building jar: /Users/wbf/Documents/javanorth/target/hello-0.0.1-SNAPSHOT.jar
[INFO] 
[INFO] --- spring-boot-maven-plugin:2.5.0:repackage (repackage) @ hello ---
[INFO] Replacing main artifact with repackaged archive
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  2.065 s
[INFO] Finished at: 2021-05-27T16:33:17+08:00
[INFO] ------------------------------------------------------------------------

打包完成,查看 target 目錄,我們能看到 hello-0.0.1-SNAPSHOT.jar 文件。

圖片

從上圖可以看到有個(gè)名字相類(lèi)似的文件,hello-0.0.1-SNAPSHOT.jar.original 文件是 Spring Boot repackage 之前的文件,也就是說(shuō)這個(gè)文件其實(shí)就是 maven 創(chuàng)建的原始jar文件,不包含其他依賴的jar包。

如果我們想看一下 hello-0.0.1-SNAPSHOT.jar 里面包含那些內(nèi)容,有沒(méi)有什么快速的辦法呢,我這里給大家提供一個(gè)命令行的方法,使用 “jar tvf ” 就行。

jar tvf hello-0.0.1-SNAPSHOT.jar

小結(jié)

從上面的示例可以看出開(kāi)始一個(gè)新的 Spring Boot 項(xiàng)目非常簡(jiǎn)單,Spring Boot 提供了專(zhuān)門(mén)的創(chuàng)建向?qū)ы?xiàng)目,簡(jiǎn)化了大量的 Spring 項(xiàng)目的創(chuàng)建難度。全程下來(lái)不到5分鐘,我們就完成了項(xiàng)目的創(chuàng)建和 hello world 的輸出演示。

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • JAVA
    +關(guān)注

    關(guān)注

    19

    文章

    2946

    瀏覽量

    104362
  • 開(kāi)源
    +關(guān)注

    關(guān)注

    3

    文章

    3181

    瀏覽量

    42235
  • 應(yīng)用程序
    +關(guān)注

    關(guān)注

    37

    文章

    3221

    瀏覽量

    57499
  • SpringBoot
    +關(guān)注

    關(guān)注

    0

    文章

    173

    瀏覽量

    153
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    Spring Boot如何實(shí)現(xiàn)異步任務(wù)

    Spring Boot 提供了多種方式來(lái)實(shí)現(xiàn)異步任務(wù),這里介紹三種主要實(shí)現(xiàn)方式。 1、基于注解 @Async @Async 注解是 Spring 提供的一種輕量級(jí)異步方法實(shí)現(xiàn)方式,它可以標(biāo)記在方法上
    的頭像 發(fā)表于 09-30 10:32 ?1315次閱讀

    Spring Boot Starter需要些什么

    pulsar-spring-boot-starter是非常有必要的,在此之前,我們先看看一個(gè)starter需要些什么。 Spring Boot Starter spring-boot
    的頭像 發(fā)表于 09-25 11:35 ?687次閱讀
    <b class='flag-5'>Spring</b> <b class='flag-5'>Boot</b> Starter需要些什么

    Spring boot中Redis的使用

    【本人禿頂程序員】springboot專(zhuān)輯:Spring boot中Redis的使用
    發(fā)表于 03-27 11:42

    Spring Boot嵌入式Web容器原理是什么

    Spring Boot嵌入式Web容器原理Spring Boot目標(biāo)是構(gòu)建“非常容易創(chuàng)建、獨(dú)立、產(chǎn)品級(jí)別的基于
    發(fā)表于 12-16 07:57

    Spring Boot從零入門(mén)1 詳述

    在開(kāi)始學(xué)習(xí)Spring Boot之前,我之前從未接觸過(guò)Spring相關(guān)的項(xiàng)目,Java基礎(chǔ)還是幾年前自學(xué)的,現(xiàn)在估計(jì)也忘得差不多了吧,寫(xiě)Spring
    的頭像 發(fā)表于 12-10 22:18 ?573次閱讀

    Spring認(rèn)證」什么是Spring GraphQL?

    這個(gè)項(xiàng)目建立在 Boot 2.x 上,但它應(yīng)該與最新的 Boot2.4.x5 相關(guān)。 要?jiǎng)?chuàng)建項(xiàng)目,請(qǐng)轉(zhuǎn)到start.spring.io并為要使用的GraphQL傳輸選擇啟動(dòng)器: 啟動(dòng)機(jī) 運(yùn)輸 執(zhí)行
    的頭像 發(fā)表于 08-10 14:08 ?766次閱讀
    「<b class='flag-5'>Spring</b>認(rèn)證」什么是<b class='flag-5'>Spring</b> GraphQL?

    Spring Boot特有的實(shí)踐

    Spring Boot是最流行的用于開(kāi)發(fā)微服務(wù)的Java框架。在本文中,我將與你分享自2016年以來(lái)我在專(zhuān)業(yè)開(kāi)發(fā)中使用Spring Boot所采用的最佳實(shí)踐。這些內(nèi)容是基于我的個(gè)人經(jīng)驗(yàn)
    的頭像 發(fā)表于 09-29 10:24 ?843次閱讀

    強(qiáng)大的Spring Boot 3.0要來(lái)了

    來(lái)源:OSC開(kāi)源社區(qū)(ID:oschina2013) Spring Boot 3.0 首個(gè) RC 已發(fā)布,此外還為兩個(gè)分支發(fā)布了更新:2.7.5 2.6.13。 3.0.0-RC1: https
    的頭像 發(fā)表于 10-31 11:17 ?1557次閱讀

    怎樣使用Kiuwan保護(hù)Spring Boot應(yīng)用程序呢?

    Spring Boot 提供了快速輕松地構(gòu)建基于Spring 的應(yīng)用程序所需的工具、功能和依賴項(xiàng)。
    的頭像 發(fā)表于 03-16 09:10 ?726次閱讀

    Spring Boot Web相關(guān)的基礎(chǔ)知識(shí)

    上一篇文章我們已經(jīng)學(xué)會(huì)了如何通過(guò)IDEA快速建立一個(gè)Spring Boot項(xiàng)目,還介紹了Spring Boot項(xiàng)目的結(jié)構(gòu),介紹了項(xiàng)目配置文件pom.xml的組成部分,并且撰寫(xiě)了我們
    的頭像 發(fā)表于 03-17 15:03 ?592次閱讀

    Spring Boot中如何使用定時(shí)任務(wù)

    本文介紹在 Spring Boot 中如何使用定時(shí)任務(wù),使用非常簡(jiǎn)單,就不做過(guò)多說(shuō)明了。
    的頭像 發(fā)表于 04-12 10:56 ?915次閱讀

    Spring Boot如何優(yōu)雅實(shí)現(xiàn)數(shù)據(jù)加密存儲(chǔ)、模糊匹配和脫敏

    近來(lái)我們都在圍繞著使用Spring Boot開(kāi)發(fā)業(yè)務(wù)系統(tǒng)時(shí)如何保證數(shù)據(jù)安全性這個(gè)主題展開(kāi)總結(jié),當(dāng)下大部分的B/S架構(gòu)的系統(tǒng)也都是基于Spring Boot + SpringMVC三層架
    的頭像 發(fā)表于 06-19 14:42 ?1788次閱讀
    <b class='flag-5'>Spring</b> <b class='flag-5'>Boot</b>如何優(yōu)雅實(shí)現(xiàn)數(shù)據(jù)加密存儲(chǔ)、模糊匹配和脫敏

    Spring Boot Actuator快速入門(mén)

    不知道大家在寫(xiě) Spring Boot 項(xiàng)目的過(guò)程中,使用過(guò) Spring Boot Actuator 嗎?知道 Spring
    的頭像 發(fā)表于 10-09 17:11 ?571次閱讀

    Spring Boot啟動(dòng) Eureka流程

    在上篇中已經(jīng)說(shuō)過(guò)了 Eureka-Server 本質(zhì)上是一個(gè) web 應(yīng)用的項(xiàng)目,今天就來(lái)看看 Spring Boot 是怎么啟動(dòng) Eureka 的。 Spring Boot 啟動(dòng) E
    的頭像 發(fā)表于 10-10 11:40 ?785次閱讀
    <b class='flag-5'>Spring</b> <b class='flag-5'>Boot</b>啟動(dòng) Eureka流程

    Spring Boot的啟動(dòng)原理

    可能很多初學(xué)者會(huì)比較困惑,Spring Boot 是如何做到將應(yīng)用代碼和所有的依賴打包成一個(gè)獨(dú)立的 Jar 包,因?yàn)閭鹘y(tǒng)的 Java 項(xiàng)目打包成 Jar 包之后,需要通過(guò) -classpath 屬性
    的頭像 發(fā)表于 10-13 11:44 ?581次閱讀
    <b class='flag-5'>Spring</b> <b class='flag-5'>Boot</b>的啟動(dòng)原理