SpringBoot必知必会(1)---快速入门

本文详细介绍SpringBoot框架的快速入门指南,包括SpringBoot的介绍、快速创建项目、项目结构解析、编写HelloWorld服务、单元测试用例,以及深入理解POM文件中的parent、starters和plugins配置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、Spring Boot介绍

Spring Boot 是由 Pivotal 团队提供的全新框架,其设计目的是用来简化新 Spring 应用的初始搭建以及开发过程,所以Spring Boot不是一门新技术,它使用“习惯优于配置”(项目中存在大量的配置,此外还内置了一个习惯性的配置,让你无需手动进行配置)的理念让你的项目快速运行起来。使用Spring Boot很容易创建一个独立运行(运行jar,内嵌Servlet容器)、准生产级别的基于Spring框架的项目,使用Spring Boot你可以不用或者只需要很少的Spring配置。

Spring将很多魔法带入了Spring应用程序的开发之中,其中最重要的是以下四个核心:

  • 自动配置:针对很多Spring应用程序常见的应用功能,Spring Boot能自动提供相关配置,简化开发;
  • 起步依赖:告诉Spring Boot需要什么功能,它就能引入需要的库;
  • 它遵循”自用默认配置”方法,以减少开发工作量;
  • 提供了一些大型项目中常见的功能性特性,如嵌入式服务器、安全、指标,健康检测、外部配置等。

2、快速入门

目标完成Spring Boot基础项目的构建,并且实现一个简单的Http请求处理,通过这个例子对Spring Boot有一个初步的了解,并体验其结构简单、开发快速的特性。

环境准备

  • 基于 Java 8,支持 Java 9;
  • apache-maven-3.3+;
  • Spring Boot 2.1.0.RELEASE;
  • 开发工具可选Intellij IDEA 或 STS。

本文采用jdk1.8.0_191Spring Boot 2.1.1.RELEASEapache-maven-3.5.3Intellij IDEA 2018.1.4 x64调试通过。

2.1、使用Intellij IDEA快速创建Spring Boot项目

① 菜单栏中选择File=>New=>Project..,可以看到如下图所示的创建功能窗口。其中Choose Initializr Service URL的Default指向的地址是Spring官方提供的Spring Initializr工具地址。
在这里插入图片描述
注意: Project SDK的选择,选择Intellij IDEA中配置的JDK,版本要求1.8+

② 点击Next,等待片刻后,可以看到如下图所示的工程信息窗口,在这里我们可以编辑我们想要创建的工程信息。其中,Type可以改变我们要构建的工程类型,比如:Maven、Gradle;Language可以选择:Java、Groovy、Kotlin。
在这里插入图片描述

③ 点击Next,进入选择Spring Boot版本和依赖管理的窗口,如勾选Web依赖。
在这里插入图片描述

④ 点击Next,进入最后关于工程物理存储的一些细节。最后,点击Finish就能完成工程的构建了。
在这里插入图片描述

2.2、项目结构说明

在这里插入图片描述

通过上面步骤完成了基础项目的创建,如上图所示,除了pom.xml以外,Spring Boot的基础结构共三个文件(具体路径根据开发者生成项目时填写的Group等信息有所差异):

  • src/main/java下的主程序入口:SpringbootQuickstartApplication
  • src/main/resources下的配置文件:application.properties
  • src/test/下的测试入口:SpringbootQuickstartApplicationTests

2.3、编写HelloWorld服务

  • 创建package命名为cn.jeesuite.springboot.controller(根据实际情况修改)

  • 创建HelloController类,内容如下:
    在这里插入图片描述

  • 启动主程序,打开浏览器访问http://localhost:8080/hello,可以看到页面输出Hello Spring Boot!

2.4、编写更简洁的HelloWorld服务

在这里插入图片描述

  • @RestController是一个组合注解,相当于@ResponseBody + @Controller合在一起的作用;
  • @GetMapping注解是@RequestMapping(method = RequestMethod.GET)的缩写;

2.5、编写单元测试用例

打开的src/test/下的测试入口SpringbootQuickstartApplicationTests类。下面编写一个简单的单元测试来模拟3#http请求,具体如下:
在这里插入图片描述

  • 注意引入下面内容,让statuscontentequalTo函数可用
    在这里插入图片描述

3、理解入门示例中的POM

3.1、pom中的parent

<parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.1.1.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
</parent>

可以通过继承spring-boot-starter-parent项目来获得一些合理的默认配置:

<artifactId>spring-boot-starter-parent</artifactId>
<packaging>pom</packaging>
<name>Spring Boot Starter Parent</name>
<description>Parent pom providing dependency and plugin management for applications
    built with Maven</description>
<url>https://projects.spring.io/spring-boot/#/spring-boot-starter-parent</url>
<properties>
    <!--使用UTF-8编码-->
    <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
    <java.version>1.8</java.version>   <!--默认使用java 8-->
    <resource.delimiter>@</resource.delimiter>
    <maven.compiler.source>${java.version}</maven.compiler.source>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <maven.compiler.target>${java.version}</maven.compiler.target>
</properties>

3.2、pom中的starters

Spring Boot为我们提供了简化企业级开发绝大多数场景的starter pom(启动器),只要引入了相应场景的starter pom,相关技术的绝大部分配置将会自动配置,从而简化我们开发。

<!-- 提供了web场景 -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- 提供了test场景 -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-test</artifactId>
    <scope>test</scope>
</dependency>

这些starters几乎涵盖了javaee所有常用场景,Spring Boot对这些场景依赖的jar也做了严格的测试与版本控制。我们不必担心jar版本合适度问题。
参考:https://docs.spring.io/spring-boot/docs/2.1.1.RELEASE/reference/htmlsingle/#using-boot-starter
疑惑:如何修改依赖的jar版本?
在上面介绍过的spring-boot-starter-parent pom文件中,我们可以看到如下父项目的定义:

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-dependencies</artifactId>
    <version>2.1.1.RELEASE</version>
    <relativePath>../../spring-boot-dependencies</relativePath>
</parent>
<!--
spring-boot-dependencies主要提供了一个引用管理功能,项目在dependencies里的部分配置可以不用填写version信息,这些version信息会从spring-boot-dependencies里得到继承,以后我们导入的依赖默认是不需要写版本信息,当然也可以覆盖这些版本信息。(spring-boot-dependencies里没有在dependencies里面管理的依赖,项目中自然需要声明版本号)
-->

一句话来说,spring-boot-dependencies里面定义了jar包的版本。

3.3、pom中的plugin

<plugin>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-maven-plugin</artifactId>
</plugin>

Spring Boot Maven plugin能够将Spring Boot应用打包为可执行的jar或war文件,使用“java -jar”命令就可以直接运行。

4、Spring Boot的三种启用方式

① IDE里运行*Application这个类的main方法
在这里插入图片描述
@SpringBootApplication: Spring Boot应用标注在某个类上说明这个类是SpringBoot的主配置类,观察源码得知@SpringBootApplication 被 @Configuration、@EnableAutoConfiguration、@ComponentScan 注解所修饰,换言之 Springboot 提供了统一的注解来替代以上三个注解,简化程序的配置。

  • @Configuration 是一个类级注释,指示对象是一个bean定义的源。@Configuration 类通过 @bean 注解的公共方法声明bean,使用这两个注解就可以创建一个简单的spring配置类,可以用来替代相应的xml配置文件。
  • @EnableAutoConfiguration启用 Spring 应用程序上下文的自动配置,从classpath下的META-INF/spring.factories中获取EnableAutoConfiguration指定的值,将这些值作为自动配置类导入Spring容器,自动配置类就生效,帮我们进行自动配置工作;
  • @ComponentScan默认扫描启动类所在包和子包下所有需要被Spring容器管理的类。在写启动类的时候如果不使用@ComponentScan指明对象扫描范围,默认指扫描当前启动类所在的包及子包里的对象,如果当前启动类没有包,则在启动时会报错:Your ApplicationContext is unlikely to start due to a @ComponentScan of the default package错误。因为启动类不能直接放在main/java文件夹下,必须要建一个包把它放进去或者使用@ComponentScan指明要扫描的包。
@ComponentScan(basePackageClasses=要扫描类.class所在位置的包)//意思是要扫描哪个类所在的包

② 在SpringBoot的应用的根目录下运行mvn spring-boot:run
在这里插入图片描述
在这里插入图片描述
③ 使用mvn install 生成jar后运行
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

如果出现springboot-quickstart-0.0.1-SNAPSHOT.jar中没有主清单属性信息,请检查pom文件中是否有spring-boot-maven-plugin的插件配置。

②、③可以通过关闭窗口或ctrl+c完成服务关闭。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值