栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Spring的工作流程

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Spring的工作流程

经过十多天的学习,我的脑海中开始对spring框架有了基本的认识

        首先我了解了spring框架的几个基本的常见的类:BeanFactory、BeanDefinition、BeanFactoryPostProfessor、BeanPostProcessor、BeanDefinitionReader还有Aware有关接口

        他们的功能区在于spring的各个工作功能期

        首先无论是选择使用注解开发还是使用配置文件开发注册bean,spring都需要一个类去读取这些配置文件信息,那个那个就是BeanDefinitionReader的实现类,他提供了配置文件的读取功能。

        当spring读取完配置文件获取的信息需要有一个对象来存储,这个对象就是BeanDefinition对象,他的任务不是存储bean对象的id与对象键值对,而是存储bean对象的定义信息,比如属性,是否单例,是否懒加载,谁是初始化方法等。

        当拥有了bean的定义信息之后接下来实际上就可以创建对象了,但是有的定义信息是可以加工的。比如我们最常见的需要二次加工定义信息的bean:DataSource对象,我们经常使用外置配置文件去把数据库连接信息放到一个properties文件中,那么在写对象属性的value值时使用的就是${},那么BeanDefinitionReader读取到的信息就是这样原封不动的,这个信息就需要二次加工,那谁来完成这件事呢?也就是BeanFactoryPostProcessor。

        多个BeanFactoryPostProcessor对象将信息进行二次加工后将改装完成的真正信息传给了BeanFactory对象,BeanFactory对象拿到了这些定义信息后就可以创建对象了,创建的方式当然就是反射的方式。既然创建了对象那么下一步就是初始化对象。

        首先需要将属性填充进对象中,使用的是AbstractAutowireCapableBeanFactory的populateBean方法,将属性注入到bean对象中。

        其次,当注入属性时需要通过bean调用spring底层的一些属性时,就需要使用Aware接口来完成捕捉获取

        然后就是BeanPostProcessor了,比如我们在学习aop时,有些类需要使用代理模式来实现,所以在初始化对象时就需要使用以实例化了的对象来完成代理模式,此时的时机恰好。而初始化又分为两块:before和after,这个在学习spring的bean生命周期时学习过,在bean调用init-param方法的前后会依次调用BeanPostProcessor的before和after方法。所以流程是先执行BeanPostProcessor的before处理方法,然后使用自己配置的init-param方法,最后在调用BeanPostProcessor的after处理方法。

        这时,bean的初始化就完成了,在容器中的bean就可以随时拿来使用。

        

 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/754362.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号