原创

第一个SpringBoot应用(Spring Boot 2.x)

简介

Spring Boot让我们的Spring应用变的更轻量化。我们不必像以前那样繁琐的构建项目、打包应用、部署到Tomcat等应用服务器中来运行我们的业务服务。通过Spring Boot实现的服务,只需要依靠一个Java类,把它打包成jar,并通过java -jar命令就可以运行起来。这一切相较于传统Spring应用来说,已经变得非常的轻便、简单。
它使用”习惯优于配置”(项目中存在大量的配置,此外还内置一个习惯性的配置,让你无须手动进行配置)的理念让你的项目快速运行起来。使用springboot很容易创建一个独立运行(运行jar,内嵌servlet容器)、准生产级别的基于Spring框架的项目,使用springboot你可以不用或者只需要很少的Spring配置。

优缺点

优点

快速构建项目:省略了繁琐且重复的xml配置,分分钟构建一个web工程;
对主流开发框架的无配置集成:提供了很多Starter 依赖包,开箱即用,无需多余配置;
项目可独立运行:无需外部依赖Servlet容器;
极大地提供了开发、部署效率;
监控简单:提供了actuator包,可以使用它来对你的应用进行监控。

缺点

依赖太多:一个简单的SpringBoot应用都有好几十M只有;
缺少监控集成方案、安全管理方案:只提供基础监控,要实现生产级别的监控,监控方案需要自己动手解决;(后期讲解soringCloud时,会结合pinpoint和skywalking分布式链路工具进行应用监控)

Spring Boot 的核心功能

  1. 独立运行的Spring项目
    Spring Boot可以以jar包的形式独立运行,运行一个Spring Boot项目只需要通过java -jar xx.jar。

  2. 内置Servlet容器
    Spring Boot可选择内嵌Tomcat、Jetty或者Undertow,这样无须以war包形式部署。

  3. 提供starter简化maven配置
    Spring提供了一系列的starter pom来简化maven依赖加载,例如:当你使用了spring-boot-starter-web时,会自动加入相关依赖,无需你手动一个一个的添加坐标依赖。

  4. 自动配置Spring
    Spring Boot会根据在类路径中的jar包、类,为jar包里的类自动配置Bean,这样会极大地减少我们要使用的配置。当然,Spring Boot只是考虑了大多数的开发场景,并不是所有场景,若在实际开发中,我们需要自动配置bean,而Spring Boot没有提供支持,则可以自定义自动配置。

  5. 无代码生成和xml配置
    Spring Boot的神奇的不是借助于代码生成来实现的,而是通过条件注解来实现的,这是Spring 4.x提供的新特性,Spring 4.x提倡使用java配置和注解配置相结合,而Spring Boot不需要任何xml配置即可实现Sping Boot的所有配置。

    项目搭建(需要有外部网络)

    利用Spring Initializr进行快速创建项目

    第一步:访问Spring Initializr:https://start.spring.io/
    file

    选项说明

    Project:使用什么构建工具,Maven还是Gradle;本教程将采用大部分Java人员都熟悉的Maven,以方便更多读者入门学习。
    Language:使用什么编程语言,Java、Kotlin还是Groovy;本教程将采用Java为主编写,以方便更多读者入门学习。
    Spring Boot:选用的Spring Boot版本;这里将使用当前最新的2.1.8版本。
    Project Metadata:项目的元数据;其实就是Maven项目的基本元素,点开More options可以看到更多设置,根据自己组织的情况输入相关数据,比如:
    file
    Dependencies:选择要加入的Spring Boot组件;本文将实现一个Http接口,所以可以选择Web组件,只需要输入Web,页面会自动联想显示匹配的可选组件:
    file
    点击”+“之后,就如下图所示:
    file

第二步:点击”Generate Project“按钮生成项目;此时浏览器会下载一个与上面Artifact名称一样的压缩包。

第三步:解压项目包,并用编译器以Maven项目导入,以IntelliJ IDEA为例:
file
file
file
然后一路下一步,选择JDK后,进入工程,等待工程自动构建完。

使用IntelliJ IDEA创建

第一步:菜单栏中选择:File => New => Project..,我们可以看到如下图所示的创建功能窗口。
file
其中Initial Service Url指向的地址就是Spring官方提供的Spring Initializr工具地址,所以这里创建的工程实际上也是基于它的Web工具来实现的。

第二步:点击Next,等待片刻后,我们可以看到如下图所示的工程信息窗口:
file

其实内容就跟我们用Web版的Spring Initializr是一模一样的,跟之前在页面上一样填写即可。

第三步:继续点击Next,进入选择Spring Boot版本和依赖管理的窗口:
file

在这里值的我们关注的是,它不仅包含了Spring Boot Starter POMs中的各个依赖,还包含了Spring Cloud的各种依赖。

第四步:点击Next,进入最后关于工程物理存储的一些细节。最后,点击Finish就能完成工程的构建了。

Intellij中的Spring Initializr虽然还是基于官方Web实现,但是通过工具来进行调用并直接将结果构建到我们的本地文件系统中,让整个构建流程变得更加顺畅,还没有体验过此功能的Spring Boot/Cloud爱好者们不妨可以尝试一下这种不同的构建方式。

我们在右下角会看到一个弹框,选择这个选项后将会为你当依赖改变时自动下载依赖。
file
file

通过上面步骤完成了基础项目的创建。如上图所示,Spring Boot的基础结构共三个文件(具体路径根据用户生成项目时填写的Group所有差异):
src/main/java下的程序入口:DemoApplication
src/main/resources下的配置文件:application.properties
src/test/下的测试入口:DemoApplicationTests
生成的DemoApplication和DemoApplicationTests类都可以直接运行来启动当前创建的项目,由于目前该项目未配合任何数据访问或Web模块,程序会在加载完Spring之后结束运行。

项目依赖分析
<?xml version="1.0" encoding="utf-8"?>

<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</modelVersion>  
  <!-- parent:继承spring-boot-starter-parent的依赖管理,控制版本与打包等内容-->  

  <parent> 
    <groupId>org.springframework.boot</groupId>  
    <artifactId>spring-boot-starter-parent</artifactId>  
    <version>2.1.8.RELEASE</version>  
    <relativePath/>  
    <!-- lookup parent from repository --> 
  </parent>  
    <!--项目元数据:创建时候输入的Project Metadata部分,也就是Maven项目的基本元素,包括:groupId、artifactId、version、name、description等-->  
  <groupId>com.example</groupId>  
  <artifactId>demo</artifactId>  
  <version>0.0.1-SNAPSHOT</version>  
  <name>demo</name>  
  <description>Demo project for Spring Boot</description>  
  <properties> 
    <java.version>1.8</java.version> 
  </properties>  
  <!--dependencies:项目具体依赖,这里包含了spring-boot-starter-web用于实现HTTP接口(该依赖中包含了Spring MVC);spring-boot-starter-test用于编写单元测试的依赖包。更多功能模块的使用我们将在后面的教程中逐步展开。
-->  
  <dependencies> 
    <dependency> 
      <groupId>org.springframework.boot</groupId>  
      <artifactId>spring-boot-starter-web</artifactId> 
    </dependency>  
    <dependency> 
      <groupId>org.springframework.boot</groupId>  
      <artifactId>spring-boot-starter-test</artifactId>  
      <scope>test</scope> 
    </dependency> 
  </dependencies>  
  <!--build:构建配置部分。默认使用了spring-boot-maven-plugin,配合spring-boot-starter-parent就可以把Spring Boot应用打包成JAR来直接运行-->  
  <build> 
    <plugins> 
      <plugin> 
        <groupId>org.springframework.boot</groupId>  
        <artifactId>spring-boot-maven-plugin</artifactId> 
      </plugin> 
    </plugins> 
  </build> 
</project>

至此我们就完成第一项目SpringBoot项目的构建,是不是很简单!

正文到此结束(点击广告是对作者最大的支持)