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

电子说

1.2w人已加入

描述

背景

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

何为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项目。

spring

项目结构

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

spring

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

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

spring

如图中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

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

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分