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

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

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

如何通過(guò)IDEA快速建立一個(gè)Spring Boot項(xiàng)目

jf_78858299 ? 來(lái)源:QStack ? 作者: 月下西樓 ? 2023-03-17 15:00 ? 次閱讀

背景

在我看來(lái)編程是一棵樹(shù),編程語(yǔ)言就是這棵樹(shù)由主干生長(zhǎng)出來(lái)的樹(shù)枝,而各種語(yǔ)言的框架則就像是樹(shù)枝上的樹(shù)葉,是當(dāng)前這門(mén)語(yǔ)言的結(jié)晶,在實(shí)際的生產(chǎn)環(huán)境中扮演著重要角色,學(xué)習(xí)這些框架能夠幫我們真正的具備實(shí)際開(kāi)發(fā)能力,進(jìn)而找到一份好的工作,有興趣可以看看聊聊自學(xué)編程這篇文章,主要是我對(duì)于編程的一些看法,也許會(huì)對(duì)你有所啟發(fā)。

何為Spring Boot

在說(shuō)Spring Boot之前先要了解Spring,那么Spring是什么呢?Spring 框架是一個(gè)分層的、面向切面的Java應(yīng)用程序的一站式輕量級(jí)解決方案,它是Spring技術(shù)棧的核心和基礎(chǔ),是為了解決企業(yè)級(jí)應(yīng)用開(kāi)發(fā)的復(fù)雜性而創(chuàng)建的。我們還是遵循之前所說(shuō)的學(xué)習(xí)是一新事物時(shí),先要略其大觀,不求甚解。在這里先不管什么分層,面向切面,現(xiàn)在只需要知道Spring是一個(gè)Java EE的開(kāi)發(fā)框架,幫助開(kāi)發(fā)通俗意義上的Java后端。

那么Spring Boot又是什么呢?Spring Boot是Pivotal團(tuán)隊(duì)在Spring的基礎(chǔ)上提供的一套全新的開(kāi)源框架,其目的是為了簡(jiǎn)化Spring應(yīng)用的搭建和開(kāi)發(fā)過(guò)程。

Spring Boot去除了大量的 XML配置文件,簡(jiǎn)化了復(fù)雜的依賴(lài)管理。Spring Boot具有Spring一切優(yōu)秀特性,Spring能做的事,Spring Boot都可以做,而且使用更加簡(jiǎn)單,功能更加豐富,性能更加穩(wěn)定而健壯。

隨著近些年來(lái)微服務(wù)技術(shù)的流行,Spring Boot也成了時(shí)下炙手可熱的技術(shù)。Spring Boot集成了大量常用的第三方庫(kù)配置,Spring Boot應(yīng)用中這些第三方庫(kù)幾乎可以是零配置的開(kāi)箱即用(out-of-the-box)大部分的 Spring Boot 應(yīng)用都只需要非常少量的配置代碼(基于Java的配置),開(kāi)發(fā)者能夠更加專(zhuān)注于業(yè)務(wù)邏輯。

由此可以看出Spring Boot是由Spring衍生出的,傳統(tǒng)的Spring框架很多復(fù)雜的配置,而Spring Boot所做的就是使用合理的默認(rèn)值簡(jiǎn)化Spring一系列的配置,提高開(kāi)發(fā)效率,而使用合理的默認(rèn)值就是Spring Boot中核心的設(shè)計(jì)思想“約定優(yōu)于配置”。

上面我們已經(jīng)介紹了什么是Spring,什么是Spring Boot,還是老規(guī)矩why比what更重要,為什么我們需要Spring Boot,它的優(yōu)勢(shì)是什么呢?

  • 快速構(gòu)建:使用Spring Initializr可以快速創(chuàng)建項(xiàng)目,同時(shí)提供了豐富的解決方案,便于快速集成各種解決方案,提升開(kāi)發(fā)效率。
  • 簡(jiǎn)化依賴(lài):提供了豐富的Starters,簡(jiǎn)化Maven配置,避免版本兼容問(wèn)題。
  • 一鍵部署:內(nèi)嵌Servlet容器,如Tomcat、Jetty,能夠直接打包成可執(zhí)行JAR文件獨(dú)立運(yùn)行,支持Jenkins、Docker,輕松實(shí)現(xiàn)自動(dòng)化運(yùn)維。
  • 應(yīng)用監(jiān)控:自帶Actuator監(jiān)控組件,輕松監(jiān)控服務(wù)的各項(xiàng)狀態(tài)。使用Spring Boot Admin可以輕松部署功能完善的應(yīng)用監(jiān)控體系。

總的來(lái)說(shuō),Spring Boot讓構(gòu)建、編碼、配置、部署、監(jiān)控都變得非常簡(jiǎn)單。

開(kāi)啟Spring Boot之旅

項(xiàng)目創(chuàng)建

如下圖所示,在IDEA中可以通過(guò)Spring Initializr快速創(chuàng)建項(xiàng)目,Group是公司,Artifact是項(xiàng)目名稱(chēng),點(diǎn)擊下一步即可創(chuàng)建一個(gè)Spring Boot項(xiàng)目。

圖片

項(xiàng)目結(jié)構(gòu)

接下來(lái)我們看一下新建項(xiàng)目的項(xiàng)目結(jié)構(gòu),如下圖所示

圖片

從上面可以看到,我們新建的test項(xiàng)目只有3個(gè)主要目錄* src/main/java:程序開(kāi)發(fā)以及主程序目錄

  • src/main/resources:配置文件和資源文件目錄
  • src/test/java:測(cè)試程序目錄 然而一個(gè)完整的項(xiàng)目包括前臺(tái)頁(yè)面、model實(shí)體、數(shù)據(jù)庫(kù)訪問(wèn)、公共基礎(chǔ)類(lèi)等非常多的文件和目錄,Spring Boot建議目錄如下圖

圖片

如圖中com.qstack.test為根目錄應(yīng)包括:* TestApplication.java:建議放到根目錄下,是項(xiàng)目的啟動(dòng)類(lèi),Spring Boot項(xiàng)目只能有一個(gè)main()方法入口。

  • comm:建議放置公共的類(lèi),如全局的配置文件、工具類(lèi)等。
  • model:主要用于實(shí)體(Entity)。
  • repository:主要用于數(shù)據(jù)庫(kù)訪問(wèn)層的代碼
  • service:主要是業(yè)務(wù)類(lèi)代碼
  • web:負(fù)責(zé)前臺(tái)頁(yè)面訪問(wèn)Controller路由 resources目錄下包括:
  • static:存放web訪問(wèn)的靜態(tài)資源如JS、CSS、圖片等。
  • templates:存放頁(yè)面模版
  • application.properties: 存放項(xiàng)目的配置信息 test目錄存放單元測(cè)試代碼,目錄結(jié)構(gòu)與java目錄結(jié)構(gòu)相同。pom.xml用于配置項(xiàng)目依賴(lài)包以及其他配置。

pom.xml解析

pom.xml是Maven項(xiàng)目中非常重要的配置文件,我們新建的test項(xiàng)目的pom.xml內(nèi)容如下:

<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<span class="hljs-name"modelVersion>
    <parent>
        <groupId>org.springframework.boot<span class="hljs-name"groupId>
        <artifactId>spring-boot-starter-parent<span class="hljs-name"artifactId>
        <version>2.6.5<span class="hljs-name"version>
        <relativePath/> 
    <span class="hljs-name"parent>
    <groupId>com.qstack<span class="hljs-name"groupId>
    <artifactId>test<span class="hljs-name"artifactId>
    <version>0.0.1-SNAPSHOT<span class="hljs-name"version>
    <name>test<span class="hljs-name"name>
    <description>test<span class="hljs-name"description>
    <properties>
        <java.version>1.8<span class="hljs-name"java.version>
    <span class="hljs-name"properties>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot<span class="hljs-name"groupId>
            <artifactId>spring-boot-starter<span class="hljs-name"artifactId>
        <span class="hljs-name"dependency>

        <dependency>
            <groupId>org.springframework.boot<span class="hljs-name"groupId>
            <artifactId>spring-boot-starter-web<span class="hljs-name"artifactId>
        <span class="hljs-name"dependency>

        <dependency>
            <groupId>org.springframework.boot<span class="hljs-name"groupId>
            <artifactId>spring-boot-starter-test<span class="hljs-name"artifactId>
            <scope>test<span class="hljs-name"scope>
        <span class="hljs-name"dependency>
    <span class="hljs-name"dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot<span class="hljs-name"groupId>
                <artifactId>spring-boot-maven-plugin<span class="hljs-name"artifactId>
            <span class="hljs-name"plugin>
        <span class="hljs-name"plugins>
    <span class="hljs-name"build>

<span class="hljs-name"project>

pom.xml主要包含四個(gè)部分,下面是 「項(xiàng)目的描述信息」 。groupId是項(xiàng)目的包路徑,artifactId是項(xiàng)目名稱(chēng),version是項(xiàng)目版本號(hào),name是項(xiàng)目名稱(chēng),descriptoion是項(xiàng)目描述。

<groupId>com.qstack<span class="hljs-name"groupId>
<artifactId>test<span class="hljs-name"artifactId>
<version>0.0.1-SNAPSHOT<span class="hljs-name"version>
<name>test<span class="hljs-name"name>
<description>test<span class="hljs-name"description>

pom.xml還包含 「項(xiàng)目的依賴(lài)」 ,項(xiàng)目的依賴(lài)信息分為parent和dependencies兩部分,以下是parent部分。parent是配置父級(jí)目錄的信息,Maven支持項(xiàng)目的父子結(jié)構(gòu),引入后會(huì)默認(rèn)繼承父級(jí)的配置,此版本引入spring-boot-starter-parent定義Spring Boot的基礎(chǔ)版。

<parent>
    <groupId>org.springframework.boot<span class="hljs-name"groupId>
    <artifactId>spring-boot-starter-parent<span class="hljs-name"artifactId>
    <version>2.6.5<span class="hljs-name"version>
    <relativePath/> 
<span class="hljs-name"parent>

dependencies是配置項(xiàng)目所需要的依賴(lài)包,Spring Boot體系內(nèi)依賴(lài)組件不需要填寫(xiě)具體版本號(hào)。

<dependencies>
    <dependency>
        <groupId>org.springframework.boot<span class="hljs-name"groupId>
        <artifactId>spring-boot-starter<span class="hljs-name"artifactId>
    <span class="hljs-name"dependency>

    <dependency>
        <groupId>org.springframework.boot<span class="hljs-name"groupId>
        <artifactId>spring-boot-starter-web<span class="hljs-name"artifactId>
    <span class="hljs-name"dependency>

    <dependency>
        <groupId>org.springframework.boot<span class="hljs-name"groupId>
        <artifactId>spring-boot-starter-test<span class="hljs-name"artifactId>
        <scope>test<span class="hljs-name"scope>
    <span class="hljs-name"dependency>
<span class="hljs-name"dependencies>

下面是 「項(xiàng)目構(gòu)建的公共變量」 ,指明了jdk版本。

<properties>
    <java.version>1.8<span class="hljs-name"java.version>
<span class="hljs-name"properties>

最后一部分是**「構(gòu)建配置信息」**

<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot<span class="hljs-name"groupId>
            <artifactId>spring-boot-maven-plugin<span class="hljs-name"artifactId>
        <span class="hljs-name"plugin>
    <span class="hljs-name"plugins>
<span class="hljs-name"build>

hello world

首先檢查一下pom.xml中有沒(méi)有以下依賴(lài),沒(méi)有則加上。

<dependency>
    <groupId>org.springframework.boot<span class="hljs-name"groupId>
    <artifactId>spring-boot-starter-web<span class="hljs-name"artifactId>
<span class="hljs-name"dependency>

在之前新建的web目錄下新建HelloController如下

@RestController
public class HelloController {
    @RequestMapping("/hello")
    public String hello() {
        return "Hello @Spring Boot!!!";
    }
}

然后啟動(dòng)項(xiàng)目,在瀏覽器輸入http://localhost:8080/hello

聲明:本文內(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

    文章

    2952

    瀏覽量

    104480
  • 開(kāi)發(fā)
    +關(guān)注

    關(guān)注

    0

    文章

    364

    瀏覽量

    40788
  • spring
    +關(guān)注

    關(guān)注

    0

    文章

    338

    瀏覽量

    14295
收藏 人收藏

    評(píng)論

    相關(guān)推薦

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

    ,用來(lái)告訴 Spring 這個(gè)方法是個(gè)異步方法,Spring 會(huì)將這個(gè)方法的執(zhí)行放在異步線程中進(jìn)行。使用 @Async 注解需要滿足以下條件: 需要在
    的頭像 發(fā)表于 09-30 10:32 ?1380次閱讀

    Spring Boot Starter需要些什么

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

    Gradle構(gòu)建的多模塊Spring Boot項(xiàng)目

    中找到 Spring Initializr,創(chuàng)建個(gè)全新的 demo 項(xiàng)目,創(chuàng)建成功后結(jié)構(gòu)如下: 之后,程序會(huì)自動(dòng)下載 Gradle 安裝包,并且
    的頭像 發(fā)表于 09-25 14:46 ?2802次閱讀
    Gradle構(gòu)建的多模塊<b class='flag-5'>Spring</b> <b class='flag-5'>Boot</b><b class='flag-5'>項(xiàng)目</b>

    啟動(dòng)Spring Boot項(xiàng)目應(yīng)用的三種方法

    的讀取,開(kāi)啟注解4)配置日志文件...配置完成之后部署tomcat 調(diào)試。但是如果使用spring boot呢?很簡(jiǎn)單,我僅僅只需要非常少的幾個(gè)配置就可以迅速方便的搭建起來(lái)套web項(xiàng)目
    發(fā)表于 01-14 17:33

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

    同樣改變了個(gè)傳統(tǒng)的Web應(yīng)用服務(wù)的啟動(dòng)流程和部署方式。通過(guò)自動(dòng)配置機(jī)制,Spring Boot提供了
    發(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 ?594次閱讀

    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.
    的頭像 發(fā)表于 08-10 14:08 ?788次閱讀
    「<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 ?861次閱讀

    強(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 ?1654次閱讀

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

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

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

    篇文章我們已經(jīng)學(xué)會(huì)了如何通過(guò)IDEA快速建立個(gè)
    的頭像 發(fā)表于 03-17 15:03 ?613次閱讀

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

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

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

    在上篇中已經(jīng)說(shuō)過(guò)了 Eureka-Server 本質(zhì)上是個(gè) web 應(yīng)用的項(xiàng)目,今天就來(lái)看看 Spring Boot 是怎么啟動(dòng) Eure
    的頭像 發(fā)表于 10-10 11:40 ?840次閱讀
    <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)用代碼和所有的依賴(lài)打包成個(gè)獨(dú)立的 Jar 包,因?yàn)閭鹘y(tǒng)的 Java 項(xiàng)目
    的頭像 發(fā)表于 10-13 11:44 ?597次閱讀
    <b class='flag-5'>Spring</b> <b class='flag-5'>Boot</b>的啟動(dòng)原理

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

    什么是Spring Boot Spring BootSpring 開(kāi)源組織下的
    的頭像 發(fā)表于 10-13 14:56 ?542次閱讀
    <b class='flag-5'>Spring</b> <b class='flag-5'>Boot</b> 的設(shè)計(jì)目標(biāo)