Spring Boot 到底是个啥?
目录
- 1. Spring
- 2. Spring Boot
- 2.1 定义
- 2.2 为什么需要 Spring Boot
- 2.3 特点
- 2.4 重要策略
- 2.5 Spring Boot 的优缺点
1. Spring
Spring
是重量级企业开发框架 EJB(Enterprise JavaBean)
的替代品,是为了解决企业级应用开发的复杂性而创建的,简化开发。通过 依赖注入(DI) 和 面向切面编程,用简单的 Java
对象(POJO
,Plain Old Java Object
) 实现 EJB
的功能,其组件代码轻量,但是配置很繁琐(需要大量 XML
配置)。Spring 2.5
引入基于注解的组件扫描,Spring 3.0
引入基于 Java
的配置,可以代替 XML
,虽然引入的特性大大提高了配置的效率,但是也无法避免,针对这一问题,Spring Boot
应运而生;
2. Spring Boot
2.1 定义
Spring Boot makes it easy to create stand-alone, production-grade Spring based Applications that you can “just run”...Most Spring Boot applications need very little Spring configuration.
上面的一段话来自 Spring
官方,即“Spring Boot
能够轻松创建基于 Spring
的独立的生产级别的应用程序,而只需要通过 “just run
(可能是 java -jar、tomcat、maven、shell、'Application'
等)”就可以让项目跑起来,大多 Spring Boot
项目仅需少量配置即可运行”。
Spring Boot 基于 Spring 开发,Spirng Boot 本身并不提供 Spring 框架的核心特性以及扩展功能,只是用于快速、敏捷地开发新一代基于 Spring 框架的应用程序。也就是说,它并不是用来替代 Spring 的解决方案,而是和 Spring 框架紧密结合用于提升 Spring 开发者体验的工具。Spring Boot 以约定大于配置的核心思想,默认帮我们进行了很多设置,多数 Spring Boot 应用只需要很少的 Spring 配置。同时它集成了大量常用的第三方库配置(例如 Redis、MongoDB、Jpa、RabbitMQ、Quartz 等等)。
2.2 为什么需要 Spring Boot
Spring
框架能够让 J2EE
企业应用程序开发更加简化,但是还是需要配置大量文件,针对这一问题,Spring Boot
能够进一步简化 Spring
框架,使得开发更为高效;
2.3 特点
- 可以创建独立
Spring
应用程序,并且基于Maven
或Gradle
插件,可以创建可执行的JARs
和WARs
; - 内嵌
Tomcat
或Jetty
等Servlet
容器; - 提供自动配置的
started
项目对象模型(POMS
)以简化Maven
配置; - 尽可能自动配置
Spring
容器; - 提供准备好的特性,如指标、健康检查和外部化配置;
- 没有冗余代码生成,不需要
XML
配置;
2.4 重要策略
-
开箱即用:
Outofbox
,指在开发过程中,通过在Maven
项目的pom
文件中添加相关依赖包,然后使用对应注解来代替繁琐的XML
配置文件以管理对象的生命周期。这一特点使得开发人员摆脱了复杂的配置工作以及相关依赖的管理工作,更加专注于业务逻辑; -
约定优于配置:
Convention over configuration
,一种由SpringBoot
本身来配置目标结构,由开发者在结构中添加信息的软件设计范式。这一特点虽然降低了部分灵活性,增加了BUG
定位的复杂性,但减少了开发人员需要做出决定的数量,同时减少了大量XML
配置,而且可以将代码编译、测试和打包等工作自动化;
2.5 Spring Boot 的优缺点
2.5.1 优点
- 使得开发基于
Spring
的应用程序变得简单; -
Spring Boot
项目开发所需时间明显减少,提高整体生产力; - 无需编写大量样板代码、
XML
配置和注释; - 与
Spring
生态系统更加容易集成,如Spring JDBC、Spring ORM、Spring Data、Spring Security
; - 遵循默认配置,我们通过修改默认配置能够减少开发工作;
- 提供嵌入式
http
服务器,方便开发测试web
应用程序; - 提供命令行接口(
CLI
)工具,用于开发测试Spring Boot
应用程序; - 提供多种插件,能使用内置工具(
Maven & Gradle
)开发测试Spring Boot
应用程序;
2.5.2 缺点
- 相关文档资料较少;
- 版本迭代快,导致各版本间的模块改动可能很大;
- hdu----(1402)A * B Problem Plus(FFT模板)
- uva----(100)The 3n + 1 problem
- 程序员你为什么这么累[续]:编码习惯之接口定义
- Python-贝叶斯实战垃圾邮件过滤(大量数据)
- hdu------(3549)Flow Problem(最大流(水体))
- go语言实现http服务端与客户端
- hdu-----(1532)Drainage Ditches(最大流问题)
- LNMP无法删除.user.ini文件的解决方法
- HDU-----(4858)项目管理(模拟)
- hdu-----(4857)逃生(拓扑排序)
- HDU-----(1083)Courses(最大匹配)
- HDU----(3294)Girls' research(manacher)
- map
- hdu----(3068)最长回文(manacher)
- java教程
- Java快速入门
- Java 开发环境配置
- Java基本语法
- Java 对象和类
- Java 基本数据类型
- Java 变量类型
- Java 修饰符
- Java 运算符
- Java 循环结构
- Java 分支结构
- Java Number类
- Java Character类
- Java String类
- Java StringBuffer和StringBuilder类
- Java 数组
- Java 日期时间
- Java 正则表达式
- Java 方法
- Java 流(Stream)、文件(File)和IO
- Java 异常处理
- Java 继承
- Java 重写(Override)与重载(Overload)
- Java 多态
- Java 抽象类
- Java 封装
- Java 接口
- Java 包(package)
- Java 数据结构
- Java 集合框架
- Java 泛型
- Java 序列化
- Java 网络编程
- Java 发送邮件
- Java 多线程编程
- Java Applet基础
- Java 文档注释
- 在CentOS VPS上通过SSH安装 MySQL的方法图解
- 使用vs2019进行Linux远程开发的方法步骤
- Android WebView的使用方法总结
- Android继承ViewGroup实现Scroll滑动效果的方法示例
- Linux内核设备驱动之字符设备驱动笔记整理
- Android 中在有序广播中添加自定义权限的实例
- 在 CentOS 8 上安装Jenkins的方法
- Android使用DrawerLayout实现侧滑菜单效果
- android语音即时通讯之录音、播放功能实现代码
- win10 装centos7 虚拟机
- 怎样给centos系统扩展磁盘分区的实现方法
- android系统分享的自定义功能的示例代码
- Linux centOS安装JDK和Tomcat的教程
- Android ContentProvider实现获取手机联系人功能
- Centos 安装 PHP7.4 和 Nginx的操作方法