0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

如何通过IDEA快速建立一个Spring Boot项目

jf_78858299 来源:QStack 作者: 月下西楼 2023-03-17 15:00 次阅读

背景

在我看来编程是一棵树,编程语言就是这棵树由主干生长出来的树枝,而各种语言的框架则就像是树枝上的树叶,是当前这门语言的结晶,在实际的生产环境中扮演着重要角色,学习这些框架能够帮我们真正的具备实际开发能力,进而找到一份好的工作,有兴趣可以看看聊聊自学编程这篇文章,主要是我对于编程的一些看法,也许会对你有所启发。

何为Spring Boot

在说Spring Boot之前先要了解Spring,那么Spring是什么呢?Spring 框架是一个分层的、面向切面的Java应用程序的一站式轻量级解决方案,它是Spring技术栈的核心和基础,是为了解决企业级应用开发的复杂性而创建的。我们还是遵循之前所说的学习是一新事物时,先要略其大观,不求甚解。在这里先不管什么分层,面向切面,现在只需要知道Spring是一个Java EE的开发框架,帮助开发通俗意义上的Java后端。

那么Spring Boot又是什么呢?Spring Boot是Pivotal团队在Spring的基础上提供的一套全新的开源框架,其目的是为了简化Spring应用的搭建和开发过程。

Spring Boot去除了大量的 XML配置文件,简化了复杂的依赖管理。Spring Boot具有Spring一切优秀特性,Spring能做的事,Spring Boot都可以做,而且使用更加简单,功能更加丰富,性能更加稳定而健壮。

随着近些年来微服务技术的流行,Spring Boot也成了时下炙手可热的技术。Spring Boot集成了大量常用的第三方库配置,Spring Boot应用中这些第三方库几乎可以是零配置的开箱即用(out-of-the-box)大部分的 Spring Boot 应用都只需要非常少量的配置代码(基于Java的配置),开发者能够更加专注于业务逻辑。

由此可以看出Spring Boot是由Spring衍生出的,传统的Spring框架很多复杂的配置,而Spring Boot所做的就是使用合理的默认值简化Spring一系列的配置,提高开发效率,而使用合理的默认值就是Spring Boot中核心的设计思想“约定优于配置”。

上面我们已经介绍了什么是Spring,什么是Spring Boot,还是老规矩why比what更重要,为什么我们需要Spring Boot,它的优势是什么呢?

  • 快速构建:使用Spring Initializr可以快速创建项目,同时提供了丰富的解决方案,便于快速集成各种解决方案,提升开发效率。
  • 简化依赖:提供了丰富的Starters,简化Maven配置,避免版本兼容问题。
  • 一键部署:内嵌Servlet容器,如Tomcat、Jetty,能够直接打包成可执行JAR文件独立运行,支持Jenkins、Docker,轻松实现自动化运维。
  • 应用监控:自带Actuator监控组件,轻松监控服务的各项状态。使用Spring Boot Admin可以轻松部署功能完善的应用监控体系。

总的来说,Spring Boot让构建、编码、配置、部署、监控都变得非常简单。

开启Spring Boot之旅

项目创建

如下图所示,在IDEA中可以通过Spring Initializr快速创建项目,Group是公司,Artifact是项目名称,点击下一步即可创建一个Spring Boot项目。

图片

项目结构

接下来我们看一下新建项目的项目结构,如下图所示

图片

从上面可以看到,我们新建的test项目只有3个主要目录* src/main/java:程序开发以及主程序目录

  • src/main/resources:配置文件和资源文件目录
  • src/test/java:测试程序目录 然而一个完整的项目包括前台页面、model实体、数据库访问、公共基础类等非常多的文件和目录,Spring Boot建议目录如下图

图片

如图中com.qstack.test为根目录应包括:* TestApplication.java:建议放到根目录下,是项目的启动类,Spring Boot项目只能有一个main()方法入口。

  • comm:建议放置公共的类,如全局的配置文件、工具类等。
  • model:主要用于实体(Entity)。
  • repository:主要用于数据库访问层的代码
  • service:主要是业务类代码
  • web:负责前台页面访问Controller路由 resources目录下包括:
  • static:存放web访问的静态资源如JS、CSS、图片等。
  • templates:存放页面模版
  • application.properties: 存放项目的配置信息 test目录存放单元测试代码,目录结构与java目录结构相同。pom.xml用于配置项目依赖包以及其他配置。

pom.xml解析

pom.xml是Maven项目中非常重要的配置文件,我们新建的test项目的pom.xml内容如下:

<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主要包含四个部分,下面是 「项目的描述信息」 。groupId是项目的包路径,artifactId是项目名称,version是项目版本号,name是项目名称,descriptoion是项目描述。

<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还包含 「项目的依赖」 ,项目的依赖信息分为parent和dependencies两部分,以下是parent部分。parent是配置父级目录的信息,Maven支持项目的父子结构,引入后会默认继承父级的配置,此版本引入spring-boot-starter-parent定义Spring Boot的基础版。

<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是配置项目所需要的依赖包,Spring Boot体系内依赖组件不需要填写具体版本号。

<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>

下面是 「项目构建的公共变量」 ,指明了jdk版本。

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

最后一部分是**「构建配置信息」**

<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中有没有以下依赖,没有则加上。

<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!!!";
    }
}

然后启动项目,在浏览器输入http://localhost:8080/hello

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • JAVA
    +关注

    关注

    19

    文章

    2954

    浏览量

    104510
  • 开发
    +关注

    关注

    0

    文章

    365

    浏览量

    40796
  • spring
    +关注

    关注

    0

    文章

    338

    浏览量

    14299
收藏 人收藏

    评论

    相关推荐

    Spring Boot如何实现异步任务

    ,用来告诉 Spring 这个方法是异步方法,Spring 会将这个方法的执行放在异步线程中进行。使用 @Async 注解需要满足以下条件: 需要在
    的头像 发表于 09-30 10:32 1389次阅读

    Spring Boot Starter需要些什么

    pulsar-spring-boot-starter是非常有必要的,在此之前,我们先看看starter需要些什么。 Spring Boot
    的头像 发表于 09-25 11:35 723次阅读
    <b class='flag-5'>Spring</b> <b class='flag-5'>Boot</b> Starter需要些什么

    Gradle构建的多模块Spring Boot项目

    中找到 Spring Initializr,创建全新的 demo 项目,创建成功后结构如下: 之后,程序会自动下载 Gradle 安装包,并且
    的头像 发表于 09-25 14:46 2820次阅读
    Gradle构建的多模块<b class='flag-5'>Spring</b> <b class='flag-5'>Boot</b><b class='flag-5'>项目</b>

    启动Spring Boot项目应用的三种方法

    的读取,开启注解4)配置日志文件...配置完成之后部署tomcat 调试。但是如果使用spring boot呢?很简单,我仅仅只需要非常少的几个配置就可以迅速方便的搭建起来套web项目
    发表于 01-14 17:33

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

    同样改变了传统的Web应用服务的启动流程和部署方式。通过自动配置机制,Spring Boot提供了
    发表于 12-16 07:57

    Spring Boot从零入门1 详述

    在开始学习Spring Boot之前,我之前从未接触过Spring相关的项目,Java基础还是几年前自学的,现在估计也忘得差不多了吧,写Spring
    的头像 发表于 12-10 22:18 599次阅读

    Spring认证」什么是Spring GraphQL?

    这个项目建立Boot 2.x 上,但它应该与最新的 Boot2.4.x5 相关。 要创建项目,请转到start.
    的头像 发表于 08-10 14:08 792次阅读
    「<b class='flag-5'>Spring</b>认证」什么是<b class='flag-5'>Spring</b> GraphQL?

    Spring Boot特有的实践

    Spring Boot是最流行的用于开发微服务的Java框架。在本文中,我将与你分享自2016年以来我在专业开发中使用Spring Boot所采用的最佳实践。这些内容是基于我的个人经验
    的头像 发表于 09-29 10:24 867次阅读

    强大的Spring Boot 3.0要来了

    来源:OSC开源社区(ID:oschina2013) Spring Boot 3.0 首个 RC 已发布,此外还为两分支发布了更新:2.7.5 2.6.13。 3.0.0-RC1: https
    的头像 发表于 10-31 11:17 1681次阅读

    怎样使用Kiuwan保护Spring Boot应用程序呢?

    Spring Boot 提供了快速轻松地构建基于Spring 的应用程序所需的工具、功能和依赖项。
    的头像 发表于 03-16 09:10 752次阅读

    Spring Boot Web相关的基础知识

    篇文章我们已经学会了如何通过IDEA快速建立
    的头像 发表于 03-17 15:03 618次阅读

    Spring Boot Actuator快速入门

    不知道大家在写 Spring Boot 项目的过程中,使用过 Spring Boot Actuator 吗?知道
    的头像 发表于 10-09 17:11 601次阅读

    Spring Boot启动 Eureka流程

    在上篇中已经说过了 Eureka-Server 本质上是 web 应用的项目,今天就来看看 Spring Boot 是怎么启动 Eure
    的头像 发表于 10-10 11:40 843次阅读
    <b class='flag-5'>Spring</b> <b class='flag-5'>Boot</b>启动 Eureka流程

    Spring Boot的启动原理

    可能很多初学者会比较困惑,Spring Boot 是如何做到将应用代码和所有的依赖打包成独立的 Jar 包,因为传统的 Java 项目
    的头像 发表于 10-13 11:44 612次阅读
    <b class='flag-5'>Spring</b> <b class='flag-5'>Boot</b>的启动原理

    Spring Boot 的设计目标

    什么是Spring Boot Spring BootSpring 开源组织下的
    的头像 发表于 10-13 14:56 547次阅读
    <b class='flag-5'>Spring</b> <b class='flag-5'>Boot</b> 的设计目标