前言
当前我们都会说SpringBoot是Spring框架对“约定优先于配置理念的最佳实践的产物,一个典型的SpringBoot应用本质上其实就是一个基于Spring框架的应用,而如果大家对Spring框架已经了如指掌,那么,在我们一步步揭开SpringBoot微框架的面纱之后,大家就会发现“阳光之下,并无新事”。
至于Spring Boot的一些用途、特色、支持的开发语言,以及它的学习前景,网络上有各种各样的博文对此有过解释,在这里我就不多说了,Springboot的重要性不言而喻。下面我们就通过一份阿里大牛的SpringBoot经典之作来深入了解SpringBoot以及它的编程思想。
1.简单工厂(非23种设计模式中的一种)
实现方式:
BeanFactory。Spring中的BeanFactory就是简单工厂模式的体现,根据传入一个唯一的标识来获得Bean对象,但是否是在传入参数后创建还是传入参数前创建这个要根据具体情况来定。
实质:
由一个工厂类根据传入的参数,动态决定应该创建哪一个产品类。
实现原理:
bean容器的启动阶段:
- 读取bean的xml配置文件,将bean元素分别转换成一个BeanDefinition对象。
- 然后通过BeanDefinitionRegistry将这些bean注册到beanFactory中,保存在它的一个ConcurrentHashMap中。
- 将BeanDefinition注册到了beanFactory之后,在这里Spring为我们提供了一个扩展的切口,允许我们通过实现接口BeanFactoryPostProcessor 在此处来插入我们定义的代码。典型的例子就是:PropertyPlaceholderConfigurer,我们一般在配置数据库的dataSource时使用到的占位符的值,就是它注入进去的。
容器中bean的实例化阶段:
实例化阶段主要是通过反射或者CGLIB对bean进行实例化,在这个阶段Spring又给我们暴露了很多的扩展点:
- 各种的Aware接口,比如 BeanFactoryAware,对于实现了这些Aware接口的bean,在实例化bean时Spring会帮我们注入对应的BeanFactory的实例。
- BeanPostProcessor接口,实现了BeanPostPr