去阿里面试,由于简历上写了读过 spring 的源码,所以面试官就问到了:看你读过 spring 的源码,可以介绍一下他的流程么?
肚子好像很多,但是脑子关于spring相关概念,很好混乱,回答的……
那怎办呢?何不试一下,找一下springboot那些约定俗成的Java类命名规范,来辅助自己更好的理解与记忆springboot的源代码
spring框架类命名
Bootstrap,Starter:
一般作为程序启动器使用,或者作为启动器的基类。通俗来说,可以认为是main函数的入口。
starter启动器,可以通过启动器集成其他的技术,比如说: web, mybatis, redis等等.可以提供对应技术的开发和运行环境.
比如: pom中引入spring-boot-starter-web, 就可以进行web开发.
Initializer:
初始化启动。
Spring Initializer 是一个用于创建和初始化 Spring 项目的Web界面或命令行工具。
它提供了一个简单易用的界面,让开发人员可以快速生成和配置基于 Spring 的项目结构,并且可以选择添加额外的依赖、配置文件和其他项目设置。
使用 Spring Initializer,您可以指定项目的基本信息(如项目名称、包名等),选择所需的 Spring Boot 版本和语言(如 Java、Kotlin、Groovy),添加所需的依赖(如 Web、数据库访问、安全等),并自动生成一个可用的 Spring 项目的初始代码结构。
Spring Initializer 支持多种方式创建项目,包括:
在浏览器中访问 https://start.spring.io/,填写相关配置信息后,点击生成项目。
使用 Spring Tool Suite(STS)或 IntelliJ IDEA 等集成开发环境的 Spring Initializer 插件。
通过命令行工具(如 curl 或 HTTPie)发送 HTTP 请求来生成项目文件。
通过 Spring Initializer 创建的项目已经为您配置好了一些基本的 Spring Boot 设置,如自动配置、依赖管理、应用程序入口类等。
您可以根据需要进一步修改和定制项目,以满足特定的开发需求。
Processor:
某一类功能的处理器,用来表示某个处理过程,是一系列代码片段的集合。
Processor是spring Bean生命周期关键触发时机

根据上图可知,实际bean对象涉及生命周期的主要是一个构造器和两个后置处理器(BeanFactoryPostProcessor和BeanPostProcessor)。
BeanPostProcessor与BeanFactoryPostProcessor的初始化、调用的不同时机,正是由于它们的作用不同导致作用域不同决定的。
BeanPostProcessor是针对Bean级别的处理,可以针对某个具体的Bean;而BeanFactoryPostProcessor针对整个Bean的工厂(BeanFactory)进⾏处理。
可以具化想象成一个是对产品颜色、大小的修饰,一个是对生成产品的流水线进行修饰,比如添加润滑剂使半成品更快流向下一个环节。
Manager:
对有生命状态的对象进行管理,通常作为某一类资源的管理入口。
Spring 5.2才引入的,是为了实现Spring transaction manager的一个marker interface,他应该可以包含两个方向的实现,一个是traditional的,一个是reactive。
Spring 将事务管理的核心功能抽象为一个事务管理器(Transaction Manager),基于这个事务管理器核心,可以实现多种事务管理的方式。
Holder:
表示持有某个或者某类对象的引用,并可以对其进行统一管理。多见于不好回收的内存统一处理,或者一些全局集合容器的缓存。
SpringContextHolder是一种基于Spring框架中ThreadLocal技术实现的管理Spring容器上下文的工具。
SecurityContextHolder,同时Spring框架借助ThreadLocal来保存和传递用户登录信息。我们通常是使用下面这段代码,来获取保存在ThreadLocal中的用户信息。
如果我们想获取用户的ID,可以这样:
String userId =
SecurityContextHolder.getContext()
.getAuthentication().getPrincipal()
.getUserId();
Factory,Provider,Builder:
一般用于各种集中生成对象的类。
Factory是工厂模式的命名,Provider常用于基于某些策略提供对象的场景。
| AliasRegistry | 定义对alias的简单增删改查等操作 |
| SimpleAliasRegistry | 主要使用map作为alias的缓存,并对接口AliasRegistry进行实现 |
| SingletonBeanRegistry | 定义对单例的注册及获取 |
| BeanFactory | 定义获取bean及bean的各种属性 |
| DefaultSingletonBeanFactory |
本文探讨了Spring Boot中常见的框架类命名规范,如Bootstrap、Initializer、Processor、Manager等,以及Spring全局上下文的相关概念,如Context、Propagator。通过了解这些约定,有助于更好地理解Spring Boot的源代码。Spring框架类命名涵盖启动器、初始化、处理器、管理器等多个方面,而全局上下文则涉及到环境和上下文的传递。掌握这些知识能帮助开发者在阅读源码时更加得心应手。
最低0.47元/天 解锁文章
9241

被折叠的 条评论
为什么被折叠?



