SpringBoot简介和工程搭建

SpringBoot是当前首选的Java服务开发框架,它能够快速基于Spring生态搭建项目,且能简化基于Spring的应用程序开发。

项目主页:https://spring.io/projects/spring-boot

SpringBoot核心特性

SpringBoot有两个最为核心的特性:

  1. 自动配置:SpringBoot约定了一组配置信息的最佳实践作为配置的默认值,其集成的组件如数据库连接池、缓存等,我们都不需要从头配置,只需要在其基础上覆盖。
  2. 起步依赖:基于Spring的优秀生态,SpringBoot提供了大量起步依赖,我们无需再费心维护依赖版本兼容等问题,SpringBoot通过Maven的<dependencyManagement>帮我们做了这件事。

SpringBoot使用场景

在SpringBoot没有出现的时代,我们搭建一个Spring工程,需要基于Spring框架进行整合配置,首先要引入各种Maven依赖,然后手动编写从模板引擎到缓存层、持久层各种配置Bean的XML、properties配置信息,即时是熟练的开发人员,这个过程也至少需要半小时的时间。不仅如此,后续各种依赖框架版本升级维护,连带导致的配置不兼容等问题更是一个大坑。而SpringBoot极大的简化了这些和业务无关的难点。

SpringBoot主要用于开发Java服务端工程。相比手动搭建SSH、SSM等,SpringBoot开发体验更好,框架本身更容易整合各种微服务生态。除非你在维护一个上古时期的老项目,或者基于Spring做一些非服务端方向的工程,否则没有理由不选择SpringBoot。

使用Spring Initializr搭建工程

SpringBoot工程搭建非常简单,我们可以直接访问官方提供的Spring Initializr工具,通过页面配置各种信息,然后下载工程模板:

https://start.spring.io/

图中,页面左侧我们填写工程的groupIdartifactId等信息,右侧选择需要的起步依赖。

当然,Spring Initializr生成的是普通的Maven/Gradle工程,如果我们不小心填错了也没事,下载下来后再手动修改相关配置文件等就行了。

除了访问网页版的Spring Initializr,大部分IDE也都对该功能进行了集成。下图为Eclipse中的创建SpringBoot工程界面:

注:使用Eclipse开发SpringBoot工程前,推荐安装STS4(Spring Tool Suite)插件,或者直接下载Spring官方提供的集成了STS的Eclipse版本。

工程目录简介

比较典型的SpringBoot工程目录例子如下:

|_src
    |_main
        |_java
            |_controller
            |_service
            |_repository
            |_DemoApplication.java
        |_resources
            |_static
            |_templates
            |_application.properties
    |_test
        |_java
        |_resources
|_pom.xml

我们可以看到,其实工程目录遵循标准的Maven工程结构。其中一些比较重要的文件:

  • src/main/java/XXXApplication.java:工程启动类
  • src/main/resources/application.properties:工程配置文件

我们根据SpringBoot文档,在application.properties进行少量配置,然后在Java代码中按照普通SpringWeb工程的三层架构开发即可。

依赖版本定义POM

在使用SpringBoot工程时,我们引入的一些依赖(例如mysql-connector-java)实际上不需要指定POM的版本字段<version>,这是因为SpringBoot工程默认引入了一个配置了大量依赖版本的POM:

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-dependencies</artifactId>
            <version>${spring-boot.version}</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>

spring-boot-dependencies中定义了大量依赖的版本号,我们实际开发时建议查看该文件,如果该文件中指定了版本号,我们手动引入的依赖就不必再指定版本号了。

spring-boot-maven-plugin插件

在Spring工程中,我们可以看到pom.xml中定义了一个插件:

<plugin>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-maven-plugin</artifactId>
    <version>2.3.7.RELEASE</version>
    <configuration>
        <mainClass>com.gacfox.bootdemo.DemoApplication</mainClass>
    </configuration>
    <executions>
        <execution>
            <id>repackage</id>
            <goals>
                <goal>repackage</goal>
            </goals>
        </execution>
    </executions>
</plugin>

spring-boot-maven-plugin插件用于构建我们的SpringBoot工程为可执行jarwar等形式。

其它注意事项

首先我们要知道,SpringBoot是基于Spring框架和其生态构建的,使用SpringBoot需要Spring相关的知识基础。如果没有经历过手动配置SSM、写大段XML的时代,直接学习SpringBoot是不太靠谱的。

其次,随着SpringBoot版本迭代更新,尤其是一些起步依赖的版本更新,一些配置也可能发生变化。SpringBoot的自动约定配置虽然方便,但相比手动配置Spring框架更加抽象。我们使用SpringBoot必然也要把文档放在手边,随时查阅。

作者:Gacfox
版权声明:本网站为非盈利性质,文章如非特殊说明均为原创,版权遵循知识共享协议CC BY-NC-ND 4.0进行授权,转载必须署名,禁止用于商业目的或演绎修改后转载。
Copyright © 2017-2024 Gacfox All Rights Reserved.
Build with NextJS | Sitemap