一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第24天,点击查看活动详情。
一、简介
SpringBoot它基于Spring4.0设计,是由 Pivotal 公司提供的框架。
2014 年 4 月发布 Spring Boot 1.0 基于Spring4.0
2018 年 3 月 Spring Boot 2.0发布 基于Spring 5.0。
SpringBoot 基于 Spring 开发。不仅继承了Spring框架原有的优秀特性,它并不是用来替代 Spring 的解决方案,而和 Spring 框架紧密结合进一步简化了Spring应用的整个搭建和开发过程。其设计目的是用来简化 Spring 应用的初始搭建以及开发过程怎么简化的呢?就是通过提供默认配置等方式让我们更容易使用。
关于 SpringBoot 有一句很出名的话就是约定大于配置。采用 Spring Boot 可以大大的简化开发模式,它集成了大量常用的第三方库配置,所有你想集成的常用框架,它都有对应的组件支持,例如 Redis、MongoDB、Dubbo、kafka,ES等等。SpringBoot 应用中这些第三方库几乎可以零配置地开箱即用,大部分的 SpringBoot 应用都只需要非常少量的配置代码,开发者能够更加专注于业务逻辑。另外SpringBoot通过集成大量的框架使得依赖包的版本冲突,以及引用的不稳定性等问题得到了很好的解决。
简化Spring应用开发的一个框架;
对整个企业级开发技术栈的一个大整合build anything;
J2EE开发的一站式解决方案;
1-1、优点
--快速构建一个独立的 Spring 应用程序 ;
--嵌入的 Tomcat 、 Jetty 或者 Undertow,无须部署 WAR 文件;
--提供starter POMs来简化Maven配置和减少版本冲突所带来的问题;
--对Spring和第三方库提供默认配置,也可修改默认值,简化框架配置;
--提供生产就绪型功能,如指标、健康检查和外部配置;
--无需配置XML,无代码生成,开箱即用;
二、Why SpringBoot?
刚才说 SpringBoot 简化了基于 Spring 开发,这只是最直观的一方面;还有一个方面: 也更得力于各微服务组件的支持,这也是谈 SpringBoot 必谈微服务的原因。(起初是Netflix移植到Spring),可以说是Spring Cloud带动了SpringBoot ,SpringBoot成就了SpringCloud。
SpringBoot和微服务的火热程度是同步的
2-1、微服务
2014年一个叫 Martin Fowler (同时也是经典著作《重构:改善既有代码的设计》一书的作者)发表了一篇关于微服务的博客,比较形象生动地介绍了什么是微服务,然后微服务才慢慢被人所熟知
他说微服务其实是一种架构风格,我们在开发一个应用的时候这个应用应该是由一组小型服务组成,每个小型服务都运行在自己的进程内;小服务之间通过HTTP的方式进行互联互通。
和微服务相对应的就是我们之前的,单体应用,就是大名鼎鼎的 all in one 的风格。这种风格把所有的东西都写在一个应用里面,比如我们熟悉的OA,CRM,ERP系统,所有的页面,所有的代码都放在一起,打成打成一个war包,然后把war包放在Tomcat容器中运行。
这种传统web开发的架构模式当然也有它的优势,比如它测试部署比较简单,因为不涉及到多个服务的互联互调,只需要把一个包上传到服务器就行了,可以说是一人吃饱全家不饿。同样也不会给运维带来麻烦,方便水平扩展,只需要又把相同的应用复制多份放在不同的服务器中就达到了扩展的目的。
单体应用的的缺点也显而易见,容易牵一发而动全身,比如要更改一个小小的功能,就可能需要重新部署整个应用。当然,更大的挑战就是日益增长的用户需求。
三、搭建spirngboot
3-1、搭建前提条件
3-1-1、前置知识要求:
–SSM框架的使用经验
–熟练使用Maven进行项目构建和依赖管理
–熟练使用Eclipse或者IDEA 2018+
3-1-2、环境要求
Spring Boot 2.3.5.RELEASE需要Java 8,并且与Java 15(包括)兼容。 还需要Spring Framework 5.2.10.RELEASE或更高版本
3-1-3、构建工具的支持
3-1-4、开发工具
eclipse
Idea 2018+(别忘了配置Maven、jdk)
3-2、创建一个简单的springboot项目
3-2-1、使用idea创建项目
3-2-1-1、首先创建一个maven项目
这个比较简单就不做叙述了
3-2-1-2、打开spring官网,查看搭建步骤
3-2-1-2-1、选择Projects下的spring boot
3-2-1-2-2、选择最新稳定版本
3-2-1-2-3、选择Getting Started
3-2-1-2-4、添加springboot的依赖
3-2-1-2-5、添加springboot web相关依赖
3-2-1-2-5、最终pom依赖
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.6.7</version>
</parent>
<dependencies>
<!--开发web应该的相关jar-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
3-2-1-3、创建控制器
3-2-1-4、创建启动类
一定要添加SpringBootApplication注解,下面main为固定写法
3-2-1-5、成功启动
3-2-1-6、测试访问
3-2-2、导出jar运行项目
之前使用ssm创建的项目可以放在tomcat里面运行,而springboot是内置tomcat可以直接运行,一般使用java -jar 来运行jar包,我们要运行springboot项目需要告诉启动文件是哪个,因此还需要添加一个pom依赖
3-2-2-1、使用maven打包
3-2-2-2、在target下生成编译文件
3-2-2-3、运行jar包
java -jar springboot-helloword-1.0-SNAPSHOT.jar
3-2-2-4、启动成功
3-2-2-5、访问
3-2-3、修改端口号
刚刚使用jar运行了jar包,现在用idea再次启动就会报端口被占用,如下
3-2-3-1、新建application.perporties
在resource中创建一个配置文件,名称必须为:application.properties,上面一开始介绍过spring boot约定大于配置,因此这个文件名称是固定的。
3-2-3-2、修改端口号
在配置文件中,修改了端口号,和访问项目的项目名
3-2-3-3、启动访问
可以看到端口号也项目名称
浏览器访问如下:
3-2-4、使用spring官网提供的服务创建springboot项目
选择Projects下面的spring initializr
选择及配置相关信息
点击 EXPLORE 查看配置项目结构
确定没问题之后就可以下载导入到开发工具中进行使用了
3-3、相关代码说明
3-3-1、spring-boot-starter-parent说明
<!--这是Spring Boot的父级依赖,这样当前的项目就是Spring Boot项目了。
它用来提供相关的Maven默认依赖。使用它之后,常用的包依赖可以省去version标签。-->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.6.7</version>
</parent>
进入spring-boot-starter-parent可以看到他的父类是 spring-boot-dependencies如下:
再次进入spring-boot-dependencies(帮我们指定了相关中间件的对应版本号),这样以后给springboot添加其他中间件依赖的时候就不用添加版本好了,可以有效的避免版本的冲突
3-3-2、spring-boot-starter-web说明
<!-- spring-boot-starter:spring-boot场景启动器;帮我们导入了web模块正常运行所依赖的组件;
默认使用tomcat作为嵌入式容器-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
3-3-3、spring-boot-maven-plugin说明
<!--部署springboot的插件, 只有加了这个插件 当运行 java -jar xxxx.jar 才能正常启动-->
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
3-3-4、启动类说明
上面提到,我们把启动类放到了com.jony包下面,然后添加了@SpringBootApplication 标记为启动类。那这个注解代表什么含义呢,让我们简单剖析一下。 ctrl+左键进入这个注解,可以看大如下注解
下面为对注解的解析说明
以上内容为对springboot的背景发展及创建springboot项目的说明,同时对springboot各个依赖以及注解的相关说明。后续文章再对springboot进行逐步的说明。