SpringBoot简介

SpringBoot特性

  1. 更广泛的+快速的Spring开发体验
  2. 一系列开箱即用的starter
  3. 一系列非功能性的自动化配置
  4. 没有XML配置文件生成

三种创建方式

系统要求

Spring Boot 目前最新版本是 2.1.4,要求至少 JDK8,集成的 Spring 版本是 5.1.6

构建工具版本要求如下:

Build ToolVersion
Maven3.3+
Gradel4.4+

内置的容器版本分别如下

NameVesion
Tomcat 9.04.0
Jetty 9.43.1
Undertow 2.04.0

在线创建

首先打开 https://start.spring.io 这个网站,如下:

在这里插入图片描述
这里要配置的按顺序分别如下:

  • 项目构建工具是 Maven 还是 Gradle
  • 开发语言
  • Spring Boot 版本
  • 既然是 Maven 工程,当然要有项目坐标,项目描述等信息了,另外这里还让输入了包名,因为创建成功后会自动创建启动类
  • Packing 表示项目要打包成 jar 包还是 war 包,Spring Boot 的一大优势就是内嵌了 Servlet 容器,打成 jar 包后可以直接运行,所以这里建议打包成 jar 包,当然,开发者根据实际情况也可以选择 war
  • 选择构建的 JDK 版本
  • 最后是选择所需要的依赖,输入关键字如 web ,会有相关的提示,这里我就先加入 web 依赖

所有的事情全部完成后,点击最下面的 Generate Project 按钮,或者点击 Alt+Enter 按键,此时会自动下载项目,将下载下来的项目解压,然后用 IntelliJ IDEA 或者 Eclipse 打开即可进行开发。

使用工具创建创建

IntelliJ IDEA

在这里插入图片描述
然后点击 Next ,填入 Maven 项目的基本信息,如下:
在这里插入图片描述
再接下来选择要添加的依赖,如下图:

在这里插入图片描述
勾选完成后,点击 Finish 完成项目的创建

STS

首先右键单击,选择 New -> Spring Starter Project ,如下图:

在这里插入图片描述
然后在打开的页面中填入项目的相关信息,如下图:

在这里插入图片描述一路点击 Next ,最后点击Finish完成项目的创建

Maven 创建

首先创建一个普通的 Maven 项目,以 IntelliJ IDEA 为例,创建步骤如下:

在这里插入图片描述注意这里不用选择项目骨架(如果大伙是做练习的话,也可以去尝试选择一下,这里大概有十来个 Spring Boot 相关的项目骨架),直接点击 Next ,下一步中填入一个 Maven 项目的基本信息,如下图:

在这里插入图片描述

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.1.4.RELEASE</version>
</parent>
<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
</dependencies>

添加成功后,再在 java 目录下创建包,包中创建一个名为 App 的启动类,如下:

@EnableAutoConfiguration
@RestController
public class App {
    public static void main(String[] args) {
        SpringApplication.run(App.class, args);
    }
    @GetMapping("/hello")
    public String hello() {
        return "hello";
    }
}

@EnableAutoConfiguration 注解表示开启自动化配置

然后执行这里的 main 方法就可以启动一个 Spring Boot 工程了

项目结构

使用工具创建出来的项目结构大致如下图:

在这里插入图片描述

启动类上的注解

@SpringBootApplication
public class PropertiesApplication {

    public static void main(String[] args) {
        SpringApplication.run(PropertiesApplication.class, args);
    }

}

@SpringBootApplication由多个注解的组合而成:

@SpringBootConfiguration
@EnableAutoConfiguration
@ComponentScan

SpringBoot中parent的理解

pom.xml中有如下一段引用:

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

基本功能

当我们创建一个 Spring Boot 工程时,可以继承自一个 spring-boot-starter-parent ,也可以不继承自它,我们先来看第一种情况。先来看 parent 的基本功能有哪些?

  1. 定义了Java的编译版本为1.8
  2. 使用了UTF-8格式编码
  3. 继承自spring-boot-dependencies,这个里面定义了依赖的版本,也正是因为继承了这个依赖,所以我们在写依赖时才不需要写版本号
  4. 执行打包操作的配置
  5. 自动化的资源过滤
  6. 自动化的插件配置
  7. 针对application.propertiesapplication.yml的资源过滤,包括通过profile定义的不同环境的配置文件,例如application-dev.propertiesapplication-dev.yml

源码分析

当我们创建一个SpringBoot项目后,我们可以在本地的Maven仓库中看到这个具体的parent文件,以2.1.4为例路径是:
repository\org\springframework\boot\spring-boot-starter-parent\2.1.4.RELEASE\spring-boot-starter-parent-2.1.4.RELEASE.pom

在这里插入图片描述
我们可以看到,它继承spring-boot-dependencies ,这里保存了基本的依赖信息,另外我们也可以看到项目的编码格式,JDK 的版本等信息,当然也有我们前面提到的数据过滤信息。最后,我们再根据它的 parent 中指定的 spring-boot-dependencies 位置,来看看 spring-boot-dependencies 中的定义:

在这里插入图片描述

不用parent

但是并非所有的公司都需要这个 parent ,有的时候,公司里边会有自己定义的 parent ,我们的 Spring Boot 项目要继承自公司内部的 parent ,这个时候该怎么办呢?
一个简单的办法就是我们自行定义 dependencyManagement 节点,然后在里边定义好版本号,再接下来在引用依赖时也就不用写版本号了,像下面这样:

<dependencyManagement>
	<dependencies>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-dependencies</artifactId>
			<version>2.1.4.RELEASE</version>
			<type>pom</type>
			<scope>import</scope>
		</dependency>
	</dependencies>
</dependencyManagement>

这样写之后,依赖的版本号问题虽然解决了,但是关于打包的插件、编译的 JDK 版本、文件的编码格式等等这些配置,在没有 parent 的时候,这些统统要自己去配置。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值