Spring Boot

原创
2019/08/01 15:36
阅读数 334

1. 概述

Spring Boot框架本质上就是通过组合注解的方式实现了诸多Spring注解的组合,是在Spring框架的基础上做了一层二次封装从而极大地简化了Spring框架本身的繁琐配置,实现快速的集成和开发。Spring Boot为快速启动且最小化配置的Spring应用而设计,并且它具有用于构建生产级别应用的一套固化的视图(摘自小马哥的《SpringBoot编程思想》)。这里的固化视图可以理解成Spring Boot的约定,因为Spring Boot的设计是约定大于实现的,这是Spring Boot的设计理念约定优于配置并不是一个新概念,它是一种软件设计范式,很早就应用在软件架构设计中,它的作用是减少软件开发人员需做决定的数量,获得简单的好处,而又不失灵活性。

Spring Boot让这个设计理念上升了一个层次,Spring Boot不止在某个功能上实现此设计理念,而是整个软件体系都在践行约定优于配置。
Spring Boot体系将约定优于配置的思想展现得淋淋尽致,小到配置文件,中间件的默认配置,大到内置容器、生态中的各种Starters无不遵循此设计规则。
Spring Boot Jpa80%大部分查询功能都以约定的方式给与提供,另外20%复杂的场景,提供另外的技术手段来解决,典型的约定优于配置的实现。
Spring Boot Starter,在项目启动的时候,根据约定信息对组件进行加载、初始化,因此项目中引入了对于的Starter之后,就可以到达开箱即用的效果。
甚至Spring Cloud的设计,也借鉴了约定优于配置的思想,很多组件都是在启动时,默认提供了其相关的功能,可以让我们的使用到达很少配置或者零配置。

2. Starter

Starter 是为快速应用开发提供“一站式服务”的依赖(Dependency),核心原理也就是Maven和Gradle的依赖传递方案,使得开发人员在开始编写新的模块时不需要拷贝样板式的配置文件、编写样板式的代码,只需要提供最简单的配置即可开始编程。Spring Boot 非常强大的原因之一就是提供了大量的 Spring Boot Starter ,如此多的“开箱即用” 的依赖模块,以便更加快速和高效专注于业务开发。Spring Boot在启动的时候,按照约定去读取Spring Boot Starter的配置信息,再根据配置信息对资源进行初始化,并注入到Spring容器中。这样Spring Boot启动完毕后,就已经准备好了一切资源,使用过程中直接注入对应Bean资源即可。

关于如何自定义Starter可以参考:实战|如何自定义SpringBoot Starter?

3. 自动配置

@EnableAutoConfiguration是实现自动配置的入口,该注解又通过@Import注解导入了AutoConfigurationImportSelector,在该类中加载META-INF/spring.factories的配置信息,然后筛选出以EnableAutoConfiguration为key的数据,将所有符合自动配置条件的bean定义加载到IoC容器,实现自动配置功能。

关于自动配置的原理可以参考:Hollis-Spring Boot的自动配置

4. Initializer

使用Spring Initializer快速创建Spring Boot项目,参考CSDN-Spring Initializer快速创建Spring Boot项目

参考资料

纯洁的微笑-Spring Boot 到底是怎么运行的,你知道吗?

占小狼的博客-面试官居然问 spring、springboot、springcloud的区别,我笑了

程序猿DD-Spring Boot最流行的16条实践解读!

纯洁的微笑-Spring Boot面试,一个问题就干趴下了!

纯洁的微笑-Spring Boot为什么这么火火火火火火?

匠心零度-Springboot启动原理解析

展开阅读全文
amp
0
0 收藏
分享
加载中
更多评论
打赏
0 评论
0 收藏
0
分享
OSCHINA
登录后可查看更多优质内容
返回顶部
顶部