SpringBoot 简单介绍及工程创建方式

SpringBoot

1.SpringBoot介绍

参考百度百科: https://baike.baidu.com/item/Spring%20Boot/20249767?fr=aladdin

Spring Boot是由Pivotal团队提供的全新框架, 其设计目的是用来简化新Spring应用的初始搭建以及开发过程。

人们把Spring Boot 称为搭建程序的脚手架。其最主要作用就是帮我们快速的构建庞大的spring项目,并且尽可能的减少一切xml配置,做到开箱即用,迅速上手,让我们关注与业务而非配置。

该框架非常火,目前新开项目几乎都是基于SpringBoot搭建,非常符合微服务架构要求,企业招聘大多都要求有SpringBoot开发经验,属于面试必问的点。

优缺点

优点:

    创建独立运行的Spring应用程序嵌入的Tomcat, 无需部署war文件简化maven配置自动配置spring提供生产就绪型功能, 如: 日志, 健康检查和外部配置等不要求配置XML非常容易和第三方框架集成起来

缺点:

    版本更新较快, 可能出现较大变化因为约定大于配置, 所以经常出现一些很难解决的问题

2.SpringBoot快速入门

项目的创建

方式1: 使用网站创建SpringBoot工程

​ SpringBoot建议使用官方提供的工具来快速构建项目,网站:https://start.spring.io/ ,IDEA自带该功能, 但需要联网使用

注意:官方提供的构建工具默认只能选择固定的版本,有些版本之间的差异非常大,所以如果需要选择某个版本建议项目构建后,自行在pom.xml文件中修改版本,建议学习阶段选择2.1.3版本

SpringBoot 简单介绍及工程创建方式

选定需要的内容后, 将工程下载导入, idea等编程软件即可.

方式2: 使用idea创建SpringBoot项目

SpringBoot 简单介绍及工程创建方式

下面的操作就与在页面中的操作相同了

SpringBoot 简单介绍及工程创建方式

选择需要的依赖

SpringBoot 简单介绍及工程创建方式

确定项目名和存储位置

SpringBoot 简单介绍及工程创建方式

上面的两种方式其实是, 差不多的, 只是第二种方式不需要, 再将项目导入idea中

方式3: 创建普通Maven工程

添加依赖, 将正常创建的SpringBoot的项目的依赖导入普通项目

<!-- 打包方式jar包 -->
<packaging>jar</packaging>

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.1.3.RELEASE</version>
</parent>

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter</artifactId>
    </dependency>
    
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
</dependencies>

并自己创建主方法即可

提出疑问

    之前的web应用打包是war,为什么现在的打包方式是jar

    当前项目继承的spring-boot-starter-parent项目有什么用

    导入的依赖spring-boot-starter-web有什么用

    占用8080端口的Tomcat9服务器哪来的

    @SpringBootApplication注解有什么用

    main方法中执行的代码SpringApplication.run(…)有什么用

入门案例分析

父工程坐标

SpringBoot提供了一个名为spring-boot-starter-parent的工程,里面已经对各种常用依赖(并非全部)的版本进行了管理,我们的项目需要以这个项目为父工程,这样我们就不用操心依赖的版本问题了,需要什么依赖,直接引入坐标即可!

继承是 Maven 中很强大的一种功能,继承可以使得子POM可以获得 parent 中的部分配置(groupId,version,dependencies,build,dependencyManagement等),可以对子pom进行统一的配置和依赖管理。

parent项目中的dependencyManagement里的声明的依赖 , 只具有声明的作用,并不实现引入,因此子项目需要显式的声明需要用的依赖。如果不在子项目中声明依赖,是不会从父项目中继承下来的;只有在子项目中写了该依赖项,并且没有指定具体版本,才会从父项目中继承该项,并且version和scope都读取自父pom;另外如果子项目中指定了版本号,那么会使用子项目中指定的jar版本parent项目中的dependencies里声明的依赖会被所有的子项目继承

web启动器

这是SpringBoot提供的web启动器 , 是一个快速集成web模块的工具包 , 包含springmvc,jackson相关的依赖

以及嵌入了Tomcat9服务器,默认端口8080

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
</dependencies>

需要注意的是,我们并没有在这里指定版本信息。因为SpringBoot的父工程已经对版本进行了管理了。

这个时候, 我们就会发现项目中出现了大量的依赖:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Eu5NrUH2-1604668675871)(D:JAVA23峰哥第六阶段3-springboot(o)]springboot课件mdimagesdecp.png)

这些都是SpringBoot根据spring-boot-starter-web这个依赖自动引入的,而且所有的版本都已经管理好,不会出现冲突。

SpringBoot非常优秀的地方在于提供了非常多以spring-boot-starter-* 开头的开箱即用的工具包,常见工具包有以下一些:

spring-boot-starter: 核心的工具包,提供了自动配置,日志和YAML配置支持

spring-boot-starter-aop: 提供了快速集成SpringAOP和AspectJ的工具包

spring-boot-starter-freemarker: 提供了快速集成FreeMarker的工具包

spring-boot-starter-test: 提供了测试SpringBoot应用的工具包

spring-boot-starter-web: 提供了快速集成web模块的工具包,包括基于SpringMVC,Tomcat服务器等

spring-boot-starter-actuator: 提供了生产环境中使用的应用监控工具包

spring-boot-starter-logging: 提供了对日志的工具包,默认使用Logback

打包独立运行

对于SpringBoot项目来说无论是普通应用还是web应用,其打包方式都是jar即可,当然web应用也能打war包,但是需要额外添加许多插件来运行,比较麻烦.

默认的Maven打包方式是不能正常的打包SpringBoot项目的,需要额外的引入打包插件,才能正常的对SpringBoot项目打成jar包,以后只要拿到该jar包就能脱离IDE工具独立运行了

	<!-- pom.xml中添加插件 -->
	<build>
	    <plugins>
	        <!-- SpringBoot打包插件 -->
	        <plugin>
	            <groupId>org.springframework.boot</groupId>
	            <artifactId>spring-boot-maven-plugin</artifactId>
	        </plugin>
	    </plugins>
	</build>
    使用maven的package命令进行打包使用命令java -jar xxx.jar 运行jar包 ( --server.port=80)
匿名

发表评论

匿名网友