您的位置:首页 > 健康 > 养生 > 企业网络营销活动_东莞通app打不开_弹窗广告最多的网站_深圳网络提速优化服务包

企业网络营销活动_东莞通app打不开_弹窗广告最多的网站_深圳网络提速优化服务包

2025/1/8 10:51:14 来源:https://blog.csdn.net/QWERTYUIef/article/details/144172869  浏览:    关键词:企业网络营销活动_东莞通app打不开_弹窗广告最多的网站_深圳网络提速优化服务包
企业网络营销活动_东莞通app打不开_弹窗广告最多的网站_深圳网络提速优化服务包

Bean的生命周期

之前我们提到过SpringApplication的run方法不光可以启动程序,还会返回一个容器,为了演示Bean的从创建到销毁的整个阶段,我们会关闭掉容器。

接下来我们来看想要加入到容器当中的类,映入眼帘的是这几个方法和其注解,先来解释一下这几个注解。

@PostConstruct注解是进行Bean初始化的方法,@PreDestroy的Bean销毁的方法,这里仅限于单例Bean,多例Bean销毁的时机还是和单例Bean不太一样的。

@Value是用来进行值注入的,可以注入配置里的信息或者系统环境变量。

再来说一下这几个方法执行的顺序。先执行构造,再执行依赖注入,再执行初始化,最后执行销毁方法。

接下来我们再针对Bean进行Bean的后处理器的讲解。

默认情况下Spring的BeanFactory只有一些核心的功能,如果想要扩展功能,就要通过后处理器完成,有一类后处理器叫作Bean工厂的后处理器,它主要是补充一些Bean的定义,方便BeanFactory去进行Bean的创建。另外一类就是Bean的后处理器,Bean的后处理器是针对于Bean的声明周期的各个阶段来提供扩展功能,也就是针对Bean的创建,依赖注入,初始化这些阶段。

这里我是实现了两个后处理器接口,并对方法进行重写,方法具体的流程已经写在日志里了。

一般来说第四个方法常用于进行方法的扩展。

第五个方法中的@ConfigurationProperies是用来将Bean的属性和配置文件中的键值对做绑定。而@PostConstruct注解会有那个CommonAnnotationBeanProcessor后处理器去进行解析。

模板方法

先从模板方法的作用说起,模板方法的作用就是提高现有代码的扩展能力。

先创建一个类和一个方法用于模拟BeanFactory当中的getBean方法,如下实现。

但是这样的的代码存在一个问题,就是它的可扩展性比较差,我们代码是直接写死的,比如说现在我们需要在依赖注入阶段去识别@Autowired和@Resource这两个注解,那么我们肯定需要对现有的代码做改写,去添加一些可以识别这两个注解的逻辑,如果我们后续还要添加新的功能,还需要进行改写,这样就会使方法越来越臃肿。

解决方法是这样的,我们创建了一个接口,如果我们想给哪个阶段去进行功能上的扩展,就在这个接口当中去定义相应的方法。

就是说如果是确定的,不变的逻辑,就放在我们的类里,这当然是没问题的,但是如果是不确定的,变化的逻辑,就抽象到接口当中。

当我们要进行扩展时,就在对应的阶段(依赖注入阶段)进行方法的调用,但是我们可能要做不同的扩展,添加不同的BeanPostPreocessor(当前接口不同的实现类),所以我们就创建一个集合去存储我们的后处理器(实现类),然后遍历所有的后处理器,让每一个后处理器都去执行inject的方法。

还有就是如果我们要完成原始对象的依赖注入,就要把原始对象当作参数传入到方法当中,只有有了原始对象,才能去分析原始分析,对原始对象做一些操作啊之类的。

然后我们还需要一个方法去添加我们的后处理器。

某个方法当中,会有一些固定不变的逻辑,而对于会变化的,具有不确定性的处理逻辑呢,就抽象成接口,将来如果要进行扩展了,就去进行具体的实现比如我们的解析那两个注解,再去进行遍历调用。这样的代码是动静结合的,具有高扩展性和很强的灵活性。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com