SpringBoot
是当前首选的Java服务开发框架,它能够快速基于Spring生态搭建项目,且能简化基于Spring的应用程序开发。
项目主页:https://spring.io/projects/spring-boot
SpringBoot有两个最为核心的特性:
<dependencyManagement>
帮我们做了这件事。在SpringBoot没有出现的时代,我们搭建一个Spring工程,需要基于Spring框架进行整合配置,首先要引入各种Maven依赖,然后手动编写从模板引擎到缓存层、持久层各种配置Bean的XML、properties配置信息,即时是熟练的开发人员,这个过程也至少需要半小时的时间。不仅如此,后续各种依赖框架版本升级维护,连带导致的配置不兼容等问题更是一个大坑。而SpringBoot极大的简化了这些和业务无关的难点。
SpringBoot主要用于开发Java服务端工程。相比手动搭建SSH、SSM等,SpringBoot开发体验更好,框架本身更容易整合各种微服务生态。除非你在维护一个上古时期的老项目,或者基于Spring做一些非服务端方向的工程,否则没有理由不选择SpringBoot。
SpringBoot工程搭建非常简单,我们可以直接访问官方提供的Spring Initializr
工具,通过页面配置各种信息,然后下载工程模板:
图中,页面左侧我们填写工程的groupId
、artifactId
等信息,右侧选择需要的起步依赖。
当然,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工程的三层架构开发即可。
在使用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工程中,我们可以看到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工程为可执行jar
、war
等形式。
首先我们要知道,SpringBoot是基于Spring框架和其生态构建的,使用SpringBoot需要Spring相关的知识基础。如果没有经历过手动配置SSM、写大段XML的时代,直接学习SpringBoot是不太靠谱的。
其次,随着SpringBoot版本迭代更新,尤其是一些起步依赖的版本更新,一些配置也可能发生变化。SpringBoot的自动约定配置虽然方便,但相比手动配置Spring框架更加抽象。我们使用SpringBoot必然也要把文档放在手边,随时查阅。