Spring Boot

文章目录

  • 1. Spring Boot
  • 2. Spring Boot相关注解
  • 3. Spring Boot 的核心注解是哪个?它主要由哪几个注解组成的?
  • 4. Spring Boot的优缺点
  • 5. Spring、Spring MVC、Spring Boot、Spring cloud的区别

1. Spring Boot

SpringBoot基于Spring4.0设计,不仅继承了Spring框架原有的优秀特性,而且还通过简化配置来进一步简化了Spring应用的整个搭建和开发过程。另外SpringBoot通过集成大量的框架使得依赖包的版本冲突,以及引用的不稳定性等问题得到了很好的解决。
Spring Boot基本上是Spring框架的扩展,其设计目的是用来简化Spring应用的初始搭建以及开发过程,遵循“约定大于配置”。它消除了设置Spring应用程序所需的复杂XML配置,可以更快,更高效的开发应用程序。通过starter这一个依赖,以简化构建和复杂的应用程序配置。嵌入Tomcat避免了应用程序部署的复杂性,可以直接通过main函数启动。

SpringBoot框架中还有两个非常重要的策略:开箱即用和约定优于配置。

  • 开箱即用,Outofbox,是指在开发过程中,通过在MAVEN项目的pom文件中添加相关依赖包,然后使用对应注解来代替繁琐的XML配置文件以管理对象的生命周期。这个特点使得开发人员摆脱了复杂的配置工作以及依赖的管理工作,更加专注于业务逻辑。
  • 约定优于配置,Convention over configuration,是一种由SpringBoot本身来配置目标结构,由开发者在结构中添加信息的软件设计范式。这一特点虽降低了部分灵活性,增加了BUG定位的复杂性,但减少了开发人员需要做出决定的数量,同时减少了大量的XML配置,并且可以将代码编译、测试和打包等工作自动化。

2. Spring Boot相关注解

注解 所属框架 作用
@SpringBootApplication Spring Boot 添加在类上,用于标记此类是Spring Boot的启动类,每个Spring Boot项目应该只有1个类添加了此注解
@SpringBootConfiguration Spring Boot 通常不需要显式的使用,它是@SpringBootApplication的元注解之一
@SpringBootTest Spring Boot 添加在类上,用于标记此类是加载Spring环境的测试类

3. Spring Boot 的核心注解是哪个?它主要由哪几个注解组成的?

核心注解是@SpringBootApplication,它主要由@SpringBootConfiguration,@EnableAutoConfiguration和@ComponentScan这三个构成

  • @SpringBootConfiguration里面就只有一个@Configuration主要注解,也就是把该类变成一个配置类所以@SpringBootConfiguration就相当于@Configuration。
  • @EnableAutoConfiguration是由 @AutoConfigurationPackage和@Import(EnableAutoConfigurationImportSelector.class)这两个组成的
    • @AutoConfigurationPackage是自动配置包,包括了一个@Import注解,给容器导入了自动配置包的注册器,AutoConfigurationPackages.Registrar.class:将主启动类的所在包及包下面所有子包里面的所有组件扫描到Spring容器
      Spring Boot_第1张图片
    • @Import(AutoConfigurationImportSelector.class):导入自动配置导入选择器组件,AutoConfigurationImportSelector.class:自动配置导入选择器,主要是从类路径下的META-INF/spring.factories中获取资源
      在这里插入图片描述
      通过SpringFactoriesLoader 类的loadFactoryNames静态方法加载出配置文件
      Spring Boot_第2张图片
      在这里插入图片描述
  • @ComponentScan:扫描包,该注解默认会扫描该类所在的包下所有的配置类

4. Spring Boot的优缺点

优点:
1、创建独立Spring应用
2、内嵌web服务器
3、自动starter依赖,简化构建配置
4、自动配置Spring以及第三方功能
5、提供生产级别的监控、健康检查以及外部优化配置
6、无代码生成、无需编写XML
一句话概括:
SpringBoot是整合Spring技术栈的一站式框架
SpringBoot是简化Spring技术栈的快速开发脚手架

缺点:
1、迭代快
2、封装太深,内部原理复杂,不容易精通

5. Spring、Spring MVC、Spring Boot、Spring cloud的区别

Spring:

Spring是一个企业级开源框架,一个IOC和AOP的容器框架,可以接管web层,业务层,dao层,持久层的组件,Spring可以将简单的各个组件通过配置组合成一个复杂的应用。在Spring中通常在XML文件里进行各种bean的配置,Spring通过IOC容器对这些Bean进行管理。Spring框架为开发Java应用程序提供了全面的基础架构支持。是一个分层的轻量级开源框架。

Spring MVC:

Spring MVC是基于Spring功能之上添加的Web框架,Spring MVC依赖Spring。是属于SpringWeb里面的一个功能模块(Spring Web MVC),专门用来开发SpringWeb项目的一种MVC模式的技术框架实现。主要处理Web开发的路径映射和视图渲染等工作。

Spring Boot:

Spring Boot基本上是Spring框架的扩展,其设计目的是用来简化Spring应用的初始搭建以及开发过程,遵循“约定大于配置”。它消除了设置Spring应用程序所需的复杂XML配置,可以更快,更高效的开发应用程序。通过starter这一个依赖,以简化构建和复杂的应用程序配置。嵌入Tomcat避免了应用程序部署的复杂性,可以直接通过main函数启动。Spring Boot不是Spring的替代者,Spring框架是通过IOC容器来管理Bean。

Spring Cloud

Spring cloud 是一个基于 Spring Boot 实现的服务治理工具包,用于微服务架构中管理和协调服务的。Spring Cloud 是一系列框架的有序集合。它利用 Spring Boot 的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等,都可以用 Spring Boot 的开发风格做到一键启动和部署。通过 Spring Boot 风格进行再封装屏蔽掉了复杂的配置和实现原理,最终给开发者留出了一套简单易懂、易部署和易维护的分布式系统开发工具包。有了 Spring Cloud 之后,让微服务架构的落地变得更简单。

总结

简单理解为:Spring包含了Spring MVC,而Spring Boot又包含了Spring或者说是在Spring的基础上做得一个扩展。

SpringCloud和SpringBoot的关系
SpringBoot专注于快速方便的开发单个个体微服务
SpringCloud是关注全局的微服务协调整理治理框架,它将SpringBoot开发的一个个单体微服务整合并管理起来,为各个微服务之间提供:配置管理、服务发现、断路器、路由、微代理、事件总线、全局锁,决策竞选、分布式会话等等集成服务
SpringBoot可以离开SpringCloud独立使用,开发项目,但是SpringCloud离不开SpringBoot,属于依赖关系

Spring Boot_第3张图片

你可能感兴趣的:(框架,spring,boot,spring,java)