springboot 历史版本文档_乘风破浪,SpringBoot入门
SpringBoot入门篇
前言
在普通的java项目中,大量的xml文件配置起来相当繁琐,导致了开发效率非常低下,整合第三方框架的配置可能会存在冲突问题导致部署效率低,打包方式是将项目打成一个war包放入到tomactwebapps目录下执行。简单来说,传统的开发方式有以下令人苦恼的的特点
- 笨重的开发
- 繁琐的配置
- 低下的开发效率
- 复杂的部署流程
- 集成第三方难度大
为了解决以上问题,SpringBoot被提出来了,它设计的目的就是为了简化Spring应用的初始搭建及开发过程,其约定大于配置,去繁从简。
看到这里,你觉得我是在吹牛逼,SpringBoot真的有那么优秀么?如果,你还是不信,咱们去官网的开发文档瞅一瞅,
打开SpringBoot官网,打开文档,让我们一探究竟。
文档里有这样一段话介绍SpringBoot框架的特点
因为全是英文,我直接精炼下给你看,SpringBoot的优点总结如下:
- 快速整合第三方框架(Maven依赖关系,Maven继承)
- 打包方式完全采用注解,采用注解方式启动SpringMVC,SpringBoot Web组件集成SpringMVC框架
- 简化xml配置
- 内置嵌入Http服务器(默认为Tomcat、Jetty),降低了对环境的要求
- 最终以java应用程序进行执行(SpringBoot项目中没有Web.xml),运行中应用状态的监控。
- Starters自动依赖于版本控制
工欲善其事,必先利其器,既然SpringBoot有那么多优点,我们肯定是要好好学的。在学习SpringBoot之前,需要搭建SpringBoot工程,那么问题来了,正在看文章的你知道怎么搭建SpringBoot工程么?它有几种方式呢?这些方式各自有什么特点及联系?工程是如何启动的呢?
文章目录
1、SpringBoot创建的三种方式
2、程序是如何执行的
3、目录结构
方式一:网上在线创建
这种方式是在网上在线创建,然后可以导出压缩包,解压后的文件就是一个SpringBoot工程文件。
访问https://start.spring.io/,打开后就是一个创建工程页面,
Project:选择创建工程的方式,可以使用Maven或者Cradle,这里我们采用Maven方式创建
Language:开发语言的选择,我们选择的Java
SpringBoot: SpringBoot的版本,选择的是2.3.3
Project Metadata: 项目信息
Group 和 Artifact :项目坐标
Name:项目名称
Description:对工程的描述
Package name: 项目内的包名称
Packaging:打包方式,我们这里的选择的是jar包
Java: Java语言的版本,这里选择是11
Dependencies:添加依赖,这里我们仅仅添加Spring Web,它包含了Spring、SpringMVC一整套东西
每个选项都选择好,就可以直接生成一个工程文件压缩包了,我们只需要使用开发工具(Intellij IDEA)打开即可。
方式二:使用IDEA的spring Initializer
方式二是在IDEA使用Spring Initializer直接创建
可以看出,Spring Initializer与方式一相同,默认采用https://start.spring.io创建
同方式一相同,填写坐标、语言、项目名称、项目描述和加载依赖等信息。
NOTE:
方式一和方式二创建工程时都需要联网,本质上都是在https://start.spring.io网址上完成的,一旦网址加载速度慢或者打不开。因为SpringBoot工程本质上就是一个Maven工程,我们可以在Maven工程的基础上改造为SpringBoot工程
方式三:改造Maven工程创建SpringBoot
我们首先创建一个Maven工程
填写坐标
确定项目名称
在pom文件中加入以下信息
<parent> <groupId>org.springframework.bootgroupId> <artifactId>spring-boot-starter-parentartifactId> <version>2.3.3.RELEASEversion> parent>
<dependencies>
<dependency> <groupId>org.springframework.bootgroupId> <artifactId>spring-boot-starter-webartifactId> dependency>
dependencies>
添加启动类
@EnableAutoConfigurationpublic class Demo3Application { public static void main(String[] args) { SpringApplication.run(Demo3Application.class, args); } }
深入理解程序的执行
1、Pom文件
1、父项目
- 父项目
<parent> <groupId>org.springframework.bootgroupId> <artifactId>spring-boot-starter-parentartifactId> <version>2.3.3.RELEASEversion> parent>
- spring-boot-starter-parent的父项目是
<parent> <groupId>org.springframework.bootgroupId> <artifactId>spring-boot-dependenciesartifactId> <version>2.3.3.RELEASEversion> <relativePath>../../spring-boot-dependenciesrelativePath> parent>
spring-boot-dependencies管理了SpingBoot应用中的所有依赖,它是SpringBoot的版本仲裁中心,以后我们导入依赖时默认是不需要写版本的(没有在dependencies里面管理的依赖自然需要声明版本号) 。
2、启动器
<dependencies> <dependency> <groupId>org.springframework.bootgroupId> <artifactId>spring-boot-starter-webartifactId> dependency> dependencies>
spring-boot-starter: 是SpringBoot的场景启动器,spring-boot-starter-web帮我们导入了web模块正常运行所依赖的组件
深入spring-boot-starter-web的底层,我们可以看到它集成常用web模块
<dependencies> <dependency> <groupId>org.springframework.bootgroupId> <artifactId>spring-boot-starterartifactId> <version>2.3.3.RELEASEversion> <scope>compilescope> dependency> <dependency> <groupId>org.springframework.bootgroupId> <artifactId>spring-boot-starter-jsonartifactId> <version>2.3.3.RELEASEversion> <scope>compilescope> dependency> <dependency> <groupId>org.springframework.bootgroupId> <artifactId>spring-boot-starter-tomcatartifactId> <version>2.3.3.RELEASEversion> <scope>compilescope> dependency> <dependency> <groupId>org.springframeworkgroupId> <artifactId>spring-webartifactId> <version>5.2.8.RELEASEversion> <scope>compilescope> dependency> <dependency> <groupId>org.springframeworkgroupId> <artifactId>spring-webmvcartifactId> <version>5.2.8.RELEASEversion> <scope>compilescope> dependency> dependencies>
NOTE:Spring Boot将所有的功能场景都抽取出来,做成一个个的starters(启动器),只需要在项目里面引入这些starter 相关场景的所有依赖都会导入进来。要用什么功能就导入什么场景的启动器。
2、主程序类(入口类)
@SpringBootApplication//@SpringBootApplication 来标注一个主程序类,说明这是一个SpringBoot应用public class demo1 { public static void main(String[] args) { //让Spring应用启动起来 SpringApplication.run(demo1.class,args); }}
@SpringBootApplication:标注在某个类上说明这个类是SpringBoot的主配置类,SpringBoot 就应该运行这个类的main方法来启动SpringBoot应用
打开SpringBootApplication的底层,发现它是一个组合注解
@Target({ElementType.TYPE})@Retention(RetentionPolicy.RUNTIME)@Documented@Inherited@SpringBootConfiguration@EnableAutoConfiguration//包扫描,扫描的是与启动类同一层的包及其子包@ComponentScan( excludeFilters = {@Filter( type = FilterType.CUSTOM, classes = {TypeExcludeFilter.class}), @Filter( type = FilterType.CUSTOM, classes = {AutoConfigurationExcludeFilter.class})})public @interface SpringBootApplication {
- @SpringBootConfiguration表明是SpringBoot的配置类
打开@SpringBootConfiguration底层
@Target({ElementType.TYPE})@Retention(RetentionPolicy.RUNTIME)@Documented@Configurationpublic @interface SpringBootConfiguration {
@Configuration:表明是一个配置类,配置类的作用等同于配置文件
EnableAutoConfiguration
@EnableAutoConfiguration告诉SpringBoot开启自动配置功能,这样自动配置才能生效。
打开@EnableAutoConfiguration
@AutoConfigurationPackage@Import({AutoConfigurationImportSelector.class})public @interface EnableAutoConfiguration {
@AutoConfigurationPackage:自动配置包
@Import({Registrar.class})
将主配置类(@SpringBootApplication标注的类)的所在包及下面所有子包里面的所有组件扫描到Spring容器
@Import(AutoConfigurationPackages.Registrar.class)
给容器导入组件
EnableAutoConfigurationImportSelector:导入哪些组件的选择器
将所有需要导入的组件以全类名的方式返回,这些组件就会被添加到容器,会给容器中导入非常多的自动配置类(xxxAutoConfiguration),就是给容器中导入这个场景需要的所有组件, 并配置好这些组件。
3、resources文件夹下的目录结构
- static:保存所有的静态资源;js css images
- templates:保存所有的模板页面(Spring Boot默认jar包使用嵌入式的Tomcat,默认不支持JSP页 面),可以使用模板引擎(freemarker、thymeleaf)
- application.properties:Spring Boot应用的配置文件,可以修改一些默认设置
关注公众号,让我们每天进步一点
springboot 历史版本文档_乘风破浪,SpringBoot入门相关推荐
- springboot 历史版本文档_这个男人练了整整二年的SpringBoot看他如何教你学学学!...
SpringBoot 2.1.x 基础课程(以后有新发现会及时更新,可关注我我我) #.Spring Boot 让开发变得更简单 在没有使用 Spring Boot 之前我们开发一个 web 项目 ...
- springboot 历史版本文档_Springboot看视频学太慢?来看看这份阿里深入实践Springboot文档...
前言: 之前 Spring Boot 2.2没能按时发布,是由于 Spring Framework 5.2 的发布受阻而推迟.这次随着 Spring Framework 5.2.0 成功发布之后,Sp ...
- cli vue 卸载,vue Cli 环境删除与重装教程 - 版本文档
vue-cli 卸载,版本选择,安装 · 检测(图文教程:vue Cli 环境删除与重装) 重要说明: vue-cli 3.0+版本,使用的不是vue-cli,而是@vue/cli: 如果用以上的安装 ...
- 脚本文档_创建完美的架构文档脚本
脚本文档 描述 (Description) System views allow us to gain access to information about any objects within S ...
- python打开文本文档_带声明的Python –带打开的文件
python打开文本文档 Python with statement allows us to write simpler code when working with context manager ...
- springboot调整请求头大小_【SpringBoot WebFlux 系列】 header 参数解析
上一篇 weblfux 主要介绍了 path 参数的解析与映射关系,在我们进入 url 参数/post 表单之前,先看一下另外的一种参数--请求头中的参数如何处理 I. 项目环境 本项目借助Sprin ...
- bin文件怎么转换成文本文档_怎么把pdf文件转换成word文档?这样转很简单
在日常的学习.工作生活中,小伙伴们总少不了要对文件格式进行转换操作,例如把pdf文件转换成word文档.对于职场老手来说,这当然不算一个难度操作,甚至还很简单.但对于职场新人而言,找不对方法,可能操作 ...
- springboot配置文件加载顺序_「SpringBoot系列」配置文件加载优先级解析
SpringBoot提供了外部分配置功能,可以使用属性文件(properties).YAML(yml)文件.环境变量和命令行参数来进行处部参数配置,并t以特定的顺序来处理配置,以便于允许合理的覆盖值. ...
- cmd命令打开文本文档_震惊!我竟然通过控制台打开了QQ!
震惊且免,本文按逆序讲解实现的原理和如何实现. 如何实现 1.设置系统的环境变量.将桌面加入环境变量.即将下列两者加入环境变量: 个人桌面: C:Users你的用户名Desktop: 公共桌面: C: ...
最新文章
- SQL char字段类型排序
- 消息(6)——WCF,构建简单的WCF服务,MTOM编码
- 【超级详细的小白教程】Hexo 搭建自己的博客
- ​谁是信创担当 《2021中国信创生态市场研究报告》今日正式发布
- python爬虫与django_请问django和爬虫程序如何整合?
- 三种方法构建简单的WEB服务器!
- spring事务管理器的作用_【面试必问】Spring中的事务管理详解
- Microsoft Surface--Bing™ Maps WPF Control
- 查询语句的练习45道题
- 如何建立个人创业的基石
- 121、华为交换机配置手册
- 如何用excel做正交分析_excel表格分析正交数据-如何应用EXCEL表进行正交试验分析...
- 弹出窗口背景透明 css,CSS弹出背景半透明窗口
- 【信号与系统】笔记(4-3)拉普拉斯逆变换
- 隐马尔可夫模型HMM (机器学习模型)
- 华为WATCH D血压管理计划怎么用
- 回想让你最有成就感的bug是什么?你是如何发现这个bug的?
- html5 img圆角,用 CSS3 给 图片添加圆角
- 【.Net平台下插件开发】-MEF与MAF初步调研
- mac php 连接 mssql 2008,php5.3.x连接MSSQLserver2008
热门文章
- 计算机文化教程实验基础知识,《计算机文化基础上机实验教程》孙家启、黄晓梅、刘奎 著_孔网...
- DeepMind 的马尔可夫决策过程(MDP)课堂笔记
- 看似杂乱无序的随机运动.....
- 知乎高赞:看懂这个颠覆世界观的认知,远比做1000道题更有用!
- 史上最让数学家无奈的规定!背后真相让人不敢相信,可是没有人能证明对错.........
- 史上最气人的数学家:文理双全智商还高,说话只说半句,解题只解半个,调戏人调戏了三百年还不够......
- 震撼!豆瓣评分9.3,这部纪录片带你感受生命之重!
- 被夸了几十年,地球都要因为它变秃了,你还天天用它......
- 用“谬论”指挥研究方向数十年,是谁让“老年痴呆”至今仍是绝症?
- 老板啥都懂,还天天套路我?!