究竟什么是Spring Boot,和普通Spring项目有什么区别

背景

最近我们打算重构设计一个公共包,其中涉及到的一个命题就是公共包要不要引入Spring Boot。那么问题来了究竟什么是Spring Boot 呢

Spring简介

Spring框架为开发Java应用程序提供了全面的基础架构支持。

它包含一些很好的功能,如依赖注入和开箱即用的模块,如:

  • Spring JDBC
  • Spring MVC
  • Spring Security
  • Spring AOP
  • Spring ORM
  • Spring Test

这些模块可以大大缩短应用程序的开发时间。

Spring Boot 简介

Spring Boot是在Spring的基础上面搭设的框架,目的是为了简化Spring项目的搭设和开发过程。

Spring Boot 特性

  • 自动配置 Spring-boot-starter 开箱即用依赖模块
  • 简化统一配置文件
  • 监控管理actuator
  • 内嵌了如Tomcat,Jetty,所有的依赖都打到一个jar包里面,可以直接java -jar 运行

自动配置 Spring-boot-starter 开箱即用依赖模块

  • 通过@SpringBootApplication注解配置一个Spring Boot项目。

  • 它是一个组合注解包含了@EnableAutoConfiguration注解来启动自动配置。

  • 该注解利用@Condition相关的注解来扫描class path路径下引入的jar包,容器中的bean对象,以及配置文件中的相关属性,来自动配置,并注入相关的bean对象。

  • SpringBoot为我们提供了简化企业级开发绝大多数场景的starter pom,只要使用了相关场景的spring-boot-starter,相关的技术配置就会被简化甚至不需要配置,就可以得到SpringBoot自动配置的Bean。
    参考Spring Boot文档 Starters章节

举例:
如果我们需要应用需要web的话需要引入spring-web spring-webmvc等几个依赖,还需部署tomcat容器,配置 web.xml文件(上下文,DispatcherServlet,mapping等)

如果是Spring boot的话只需要引入spring-boot-starter-web 其他的都会自动配置且注入好。简洁,省事。

        <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency>
  • SpringBoot还帮助我们统一做了版本管理,只需引入>spring-boot-starter-parent的版本号即可,Spring Boot有做大量的版本兼容测试,因此可以避免我们自己设置版本导致的兼容问题。
    <parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.0.4.RELEASE</version><relativePath/> <!-- lookup parent from repository --></parent>

在spring-boot-starter-parent中定义

<properties><activemq.version>5.15.4</activemq.version><antlr2.version>2.7.7</antlr2.version><appengine-sdk.version>1.9.64</appengine-sdk.version><artemis.version>2.4.0</artemis.version><aspectj.version>1.8.13</aspectj.version><assertj.version>3.9.1</assertj.version><atomikos.version>4.0.6</atomikos.version><bitronix.version>2.1.4</bitronix.version><build-helper-maven-plugin.version>3.0.0</build-helper-maven-plugin.version><byte-buddy.version>1.7.11</byte-buddy.version><caffeine.version>2.6.2</caffeine.version><cassandra-driver.version>3.4.0</cassandra-driver.version><classmate.version>1.3.4</classmate.version><commons-codec.version>1.11</commons-codec.version><commons-dbcp2.version>2.2.0</commons-dbcp2.version><commons-lang3.version>3.7</commons-lang3.version><commons-pool.version>1.6</commons-pool.version>...</properties>

简化统一配置文件

  • Spring 相关的xml配置文件,全部采用@Configuration代码的方式配置处理,不需要再维护一堆散乱无章的xml文件

  • 应用相关的配置默认用application-*.yml配置。约定优先,不再需要直接配置文件

  • 提供了@ConfigurationProperties注解将配置项自动转换为javaBean对象方便使用

监控管理actuator

监控管理是生产级别必不可少的组件。项目中添加了spring-boot-starter-actuator依赖和少许的配置,及可以实现应用的监控和管理功能

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

可以http或者jmx的方式连接。

出于安全考虑并不会所有的端口都默认打开,需要在配置文件中配置需要打开的端口
有如下端口

  • 健康
  • 环境变量
  • Spring MVC映射url
  • 关闭服务
  • 加载class列表
  • 自动配置结果
  • 缓存
  • session
  • dump

  • 参考Spring Boot文档Actuator章节

结论

Spring Boot是在Spring的基础上面搭设的框架,目的是为了简化Spring项目的搭设和开发过程。不存在冲突的问题。

它提供了如下特性如果有需求则可以引入

  • 自动配置 Spring-boot-starter 开箱即用依赖模块
  • 简化统一配置文件
  • 监控管理actuator
  • 内嵌了如Tomcat,Jetty,所有的依赖都打到一个jar包里面,可以直接java -jar 运行

究竟什么是Spring Boot,和普通Spring项目有什么区别相关推荐

  1. Spring Boot——开发新一代Spring Java应用

    2019独角兽企业重金招聘Python工程师标准>>> Spring官方网站本身使用Spring框架开发,随着功能以及业务逻辑的日益复杂,应用伴随着大量的XML配置文件以及复杂的Be ...

  2. Spring Boot——开发新一代Spring应用

    Spring官方网站本身使用Spring框架开发,随着功能以及业务逻辑的日益复杂,应用伴随着大量的XML配置文件以及复杂的Bean依赖关系.随着Spring 3.0的发布,Spring IO团队逐渐开 ...

  3. sm4 前后端 加密_这7个开源的Spring Boot前后端分离项目整理给你

    来源|公众号:江南一点雨 前后端分离已经开始逐渐走进各公司的技术栈,不少公司都已经切换到前后端分离开发技术栈上面了,因此建议技术人学习前后端分离开发以提升自身优势.同时,也整理了 7 个开源的 Spr ...

  4. Spring Boot + BeetlSQL + H2数据库项目整合

    Spring Boot + BeetlSQL + H2数据库项目整合 这个项目是一个大佬给的,目的是看我的自学能力和基础知识的牢固程度,要求如下: 底层架构采用springboot 前端技术使用lay ...

  5. Spring Boot(五):spring data jpa的使用

    Spring Boot(五):spring data jpa的使用 一.spring data jpa介绍 1,JPA是什么 JPA(Java Persistence API)是Sun官方提出的Jav ...

  6. 使用 Spring Boot 快速构建 Spring 框架应用

    https://www.ibm.com/developerworks/cn/java/j-lo-spring-boot/index.html Spring 框架对于很多 Java 开发人员来说都不陌生 ...

  7. 使用 Spring Boot 快速构建 Spring 框架应用--转

    原文地址:https://www.ibm.com/developerworks/cn/java/j-lo-spring-boot/ Spring 框架对于很多 Java 开发人员来说都不陌生.自从 2 ...

  8. Spring Boot + JSP 创建web项目

    虽然Spring Boot的官网不推荐使用JSPs,但是本篇文章还是带你实现Spring Boot + JSP创建一个简单的web项目.想要用Spring Boot + Thymeleaf实现web项 ...

  9. spring boot新建非web项目(无需依赖)

    spring boot新建非web项目(无需依赖) spring boot集成spring data jpa的时候需要jdk版本为1.8,所以jdk的版本最好设置为1.8 如果新建的项目是以jsp为模 ...

  10. 构建Spring Boot RESTful服务+ Spring Boot执行器

    总览 什么是REST? REST(代表状态转移)是Web构建的体系结构样式,已成为用于Web应用程序的标准软件设计模式 . 代表性国家转移一词最早由REST的发起人,HTTP规范的主要作者之一Roy ...

最新文章

  1. winhttp get 实例_实例|CASS的绘制的航道断面,怎么多了两个边沟? 135
  2. SQL Server 2005中解决死锁问题
  3. UI4_UIStepper与UIProgressView
  4. 计算有用功 matlab,中国大学mooc2020年科学计算与MATLAB语言章节测验答案
  5. web input光标的颜色
  6. php 多图上传编辑器,ThinkPHP5整合LayUI编辑器图片上传
  7. 语言中要输出表格_C语言 | 表格输出若干人的信息
  8. 在Ubuntu上为Android系统的Application Frameworks层增加硬件访问服务(老罗学习笔记5)...
  9. python怎么爬取知乎回答并制作词云_用Python分析了国庆“坑爹”景点......
  10. 正则表达式:Javascript
  11. 2019.7.26随堂笔记
  12. C++简介(3)--引用和指针
  13. 中国数字音乐——版权问题之公司分析
  14. win10开机的微软服务器,微软 Win10 新 UI 的门面:教你启用 Win10 全新开机动画
  15. 全球及中国非接触式雷达液位计行业运营动向及投资竞争力分析报告2022-2027年
  16. 解决 VMWare 15.5.5 安装 CentOS 7 出现大小写混乱问题
  17. 毕设第三周(12月19日——12月25日)
  18. OPENGL ES 2.0 知识串讲(2)――EGL详解
  19. 理解事务四大特性(Transaction)——原子性、一致性、隔离性和持久性(ACID)
  20. 计算机中文名称乱码,中文文件名乱码怎么解决?

热门文章

  1. h5新增标签和表单元素
  2. 2022年血液制品行业研究报告
  3. 易茶APP:茶叶微商城案例分析
  4. 对应用有限制的含粪便废水的抽取设备建筑材料英国UKCA认证—EN 12050-3
  5. visdom安装与基本用法
  6. 有关H5将文字转成语音播放
  7. 如何消除WIFI对蓝牙耳机的信号干扰?
  8. 物联网通信技术期末复习3:第三章数据链路层
  9. Unity NGUI HUD text简单使用
  10. gcc 4.9.4 编译