深入解析spring Boot原理-提升你的内功

特邀导师:MIC

10余年Java EE从业经验,曾就职于平安、大众点评、挖财等互联网金融公司,《Spring Cloud Alibaba微服务原理与实战》作者。

参与项目:平安支付壹钱包、上海挖财挖财宝项目

很明显的一个现象,除了一些老项目,现在 Java 后端项目基本都是基于 Spring Boot 进行开发,毕竟它好用以及天然微服务友好。毫不夸张,Spring Boot 是 Java 后端领域最最最重要的技术之一,熟练掌握它对于 Java 程序员至关重要。

这篇文章我会带你了解 Spring Boot 的原理,帮助大家深入学习 Spring Boot。

01什么是spring Boot?

Spring Boot提供了快速构建Spring Dramework应用的框架。其设计目的是用来简化Spring应用初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。

Spring Boot是如何简化的?约定优于配置,通过约定的方式来减少配置,从而提高开发效率。Spring Boot内核->(Spring Framework>约定优于配置之后)

约定优于配置的体现

①默认的Maven结构,以及默认的打包方式

②默认的配置文件application.properties

③Starer的相关jar包依赖

④Web默认包含Spring-mvc以及内置tomcat容器

⑤部署到tomcat

如何没有Spring Boot

①引入jar包

②修改web.xml,添加监听和拦截

③创建spring mvc核心配置文件dispatcher-servlet.xml

④创建controller

⑤部署到tomcat

02深度思考或简化背后的原理

Spring注解驱动的发展过程从XML配置时代到注解驱动时代 。具体如下所示:

Spring 1.x注解驱动启蒙时代

Spring 1.x 支持Annotation,虽然框架层面均已经支持@managedResource和@Transactional(事务注解)等注解,但主要还是以XML配置为准。

Spring 1.x 提供了什么功能?

提供Spring容器来托管Bean对象——Bean通过描述一个对象,Spring会加载这个配置,并且进行初始化并保存。

Spring 2.x注解驱动过渡时期

Spring 2.x在Anonotation支持方面添加了新的成员,@Required、数据相关的@Repository及AOP相关的@Aspect等,但同时提升了XML配置能力,即“可扩展的XML编写”。xml+注解的方式,无法完全脱离xml。

缺陷:bean的维护工作变得很重。

Spring 2.x提供注解:

@Reqired

@Repository

@Aspect

@Component

@Service

@Controller

举个例子:

如果扫描到当前的标签,那么意味着当前的bean会被装载。

Spring 3.x注解驱动黄金时代

Spring 3.x是一个里程牌式的时代,在3.0时代中除了提升Spring模式注解“派生”的层次性,并通过注解完全取代传统的XML形式的描述。替换XML配置方式,引入配置类注解@Configuration。

Spring 3.x提供注解:

@Configuration

@CompomentScan

@Import-导入

Spring 4.x注解驱动完善时代

Spring 4.x之后,引入条件注解@Conditional。通过自定义Condition实现配合,弥补了之前版本条件化装配的短板,4.0开始Profile反过来通过@Conditional实现。

Spring 5.x注解驱动成熟时代

Spring 5.x作为Spring Boot2.0的底层,注解驱动的性能提升方面不是很明显。在Spring Boot应用场景中,大量使用@ComponentScan扫描,导致Spring模式的注解解析时间耗时增大。因此,5.0时代引入@Indexed,为Spring模式注解添加索引。

注解驱动的意义是简化Bean的原理,描述一个需要被Spring IOC容器管理的对象。

03总结

Spring Boot 是 Java 后端领域中经常使用的技术,希望这篇文章能让你掌握Spring Boot 原理,成为更优秀的Javer。

你可能感兴趣的:(深入解析spring Boot原理-提升你的内功)