美文网首页
Springbean

Springbean

作者: 夜雨听风_b3d5 | 来源:发表于2019-11-03 13:19 被阅读0次

    BeanFactory和FactoryBean

    区别:BeanFactory是个Factory,也就是IOC容器或对象工厂,FactoryBean是个Bean。在Spring中,所有的Bean都是由BeanFactory(也就是IOC容器)来进行管理的。但对FactoryBean而言,这个Bean不是简单的Bean,而是一个能生产或者修饰对象生成的工厂Bean,它的实现与设计模式中的工厂模式和修饰器模式类似 。

    spring的生命周期:

    instantiate bean对象实例化

    populate properties 封装属性

    如果Bean实现BeanNameAware执行setBeanName

    如果Bean实现BeanFactoryAwar或ApplicationContextAwar设置工厂setBeanFactory或上下文对象setApplicationContext

    如果存在类实现BeanPostProcessor(后处理Bean),执行postProcessBeforeInitialization

    如果Bean实现InitializingBean执行afterPropertiesSet

    调用自定义的init-method方法

    如果存在类实现BeanPostProcessor(处理Bean),执行postProcessAfterInitialization

    执行业务处理

    如果Bean实现DisposableBean执行destroy

    调用自定义的destroy-method

      第一步就是对实例化bean,调用构造函数来创建实例,第二步是根据配置,进行相应属性的设置,依赖注入就是在这一步完成的。

      第三步和第四步是让spring去了解咱们的spring容器,第五步和第八步可以针对指定的Bean进行功能增强,这时一般是采用的动态代理,(两种动态代理方式:jdk动态代理和cglib动态代理)。第六步和第十步是通过实现指定的接口来完成init(初始化)和destory(销毁)操作。但是我们在通常情况下不会使用这两步,因为我们可以通过第七步和第十一步,在配置文件中设置相应的初始化和销毁方法。

     比如:

      总结:

        对于springbean的生命周期,我们需要关注的主要有两个方法:

          1.增强bean的功能可以使用后处理Bean,BeanPostProcessor

          2.如果需要初始化或销毁操作,我们可以使用init-method方法和destory-method方法。

      同时还需要注意一点:destory-method方法是只针对于scope=singleton的时候才有效果!

    仅个人学习整理,转载https://www.cnblogs.com/wgl-gdyuan/p/9911653.html

    相关文章

      网友评论

          本文标题:Springbean

          本文链接:https://www.haomeiwen.com/subject/bmwkbctx.html