beanfacotry和applicationcontext的恩怨情仇

beanfactory获得一个bean的 通过name加载的
applicationcontext 派生自beanfacory 不是继承 源码上没看懂extends
applicationcontext(webapplicationcontext是继承自applicationcontext) 和 beanfacoty的区别
beanfactory古老不支持aop beanfactory需要手动设置beanpostprocesor(bean初始化前后 执行beforeprocesoor 和afterprocessor两个方法 通过aop动态代理实现 拦截这个方法 喂他生成代理 调用beforeproceesor方法 method.invoke(class, param) afterprocesesor) applicaitoncontext启动的时候自动关联
beanfacotory延迟加载bean. 使用的时候在加载 applicaitoncontext 根据bean不同的原型模式 单例 懒加载=false 单例 懒加载 = true还是多利
beanfacotry和applicationcontext都是 保存beandefination 获得bean实例 保存bean之间的关系(比如他和beanpostprocessors 他也是个bean 的关系)
applicationcontext比beanfactory 多了 一个支持增加监听bean事件 多层上下文容器webapplication file xml等等 webapplicationcontext.还有就是dispatchservlet
servlet.init ->加载servletcontext-> contextloaderlistern -> contextinitial -> applicaitoncontext ->初始化我们的bean
程序中获得applicationcontext 和beanfactory都是通过继承各自的aware接口。 注入不同的
bean通过applicationcontext获得的时候 如果有绑定Beanpostproccesors applicaitoncontext.getbean(name)的时候里面是通过aop拦截生成动态代理在前后执行。applicationcontext初始化的时候就装配好了。
posted @ 2020-08-23 22:50  saveworld_niub  阅读(197)  评论(0编辑  收藏  举报