当前位置: 首页 > news >正文

网站页码浙江省网站域名备案

网站页码,浙江省网站域名备案,重庆自助建站软件,天津网站建设-中国互联目录 SpringBean的生命周期 Bean实例属性填充 三级缓存 常用的Aware接口 Spring IoC容器实例化Bean总结 SpringBean的生命周期 Spring Bean的生命周期是从 Bean 实例化之后#xff0c;即通过反射创建出对象之后#xff0c;到Bean成为一个完整对象#xff0c;最终存储到…目录 SpringBean的生命周期 Bean实例属性填充 三级缓存 常用的Aware接口 Spring IoC容器实例化Bean总结 SpringBean的生命周期 Spring Bean的生命周期是从 Bean 实例化之后即通过反射创建出对象之后到Bean成为一个完整对象最终存储到单例池中这个过程被称为Spring Bean的生命周期。Spring Bean的生命周期大体上分为三个阶段 Bean的实例化阶段Spring框架会取出BeanDefinition的信息进行判断当前Bean的范围是否是singleton是否不是延迟加载的是否不是FactoryBean等最终将一个普通的singleton的Bean通过反射进行实例化Bean的初始化阶段Bean创建之后还仅仅是个半成品还需要对Bean实例的属性进行填充、执行一些Aware接口方法、执行BeanPostProcessor方法、执行InitializingBean接口的初始化方法、执行自定义初始化init方法等。该阶段是Spring最具技术含量和复杂度的阶段Aop增强功能Spring的注解功能等。以及Bean的循环引用问题都是在这个阶段体现的。Bean的完成阶段经过初始化阶段Bean就成为了一个完整的Spring Bean被存储到单例池singletonObjects中去。即完成了Spring Bean的整个生命周期。 接下来我们着重于Bean的初始化阶段进行分析初始化过程涉及如下几个过程 Bean实例的属性填充Aware接口属性注入BeanPostProcessor的before()方法回调InitializingBean接口的初始化方法回调自定义初始化方法inti回调BeanPostProcessor的after()方法回调 Bean实例属性填充 基于xml文件的实例属性填充。 bean iduserService classcom.zmt.service.impl.UserServiceImplproperty nameuserDao refuserDao/propertyproperty namename value张三/property /bean 在属性注入中存在三种情况 一种基本属性注入通过反射拿到set方法直接注入一种单项引用属性注入如UserService中需要注入UserDao但UserDao不需要UserService这种从容器中执行getBean方法后通过set方法反射进去如果容器中不存在则先创建被注入的对象后再进行诸如操作。一种双向对象属性注入也就是说UserService中需要注入UserDaoUserDao需要注入UserService。这涉及到循环引用。 下面是循环引用的问题流程图 如果循环依赖的话半成品的bean会被存储在内存中不归Spring管控那么在注入时就无法从容器中获取到对应的bean从而导致死循环不停的创建对象。解决方法是在Spring中添加一个存储半成品bean的map当无法从单例池中获取的对象时从半成品中的map获取 三级缓存 所谓三级缓存分别是单例池与两个存储半成品bean的map集合在源码中为 这三个Map集合分别存储的是 实例化与初始化都完成的bean称为一级缓存缓存半成品且对象已经被其他对象引用了称为二级缓存缓存半成品对象也未被引用使用时在通过工厂创建bean称为三级缓存 UserService和UserDao循环依赖的过程结合上述三级缓存描述一下就是 UserService 实例化对象但尚未初始化将UserService存储到三级缓存UserService 属性注入需要UserDao从缓存中获取没有UserDaoUserDao实例化对象但尚未初始化将UserDao存储到到三级缓存UserDao属性注入需要UserService从三级缓存获取UserServiceUserService从三级缓存移入二级缓存UserDao执行其他生命周期过程最终成为一个完成Bean存储到一级缓存删除二三级缓存UserService 注入UserDaoUserService执行其他生命周期过程最终成为一个完成Bean存储到一级缓存删除二三级缓存。 常用的Aware接口 Aware接口是一种框架辅助属性注入的一种思想其他框架中也可以看到类似的接口。框架具备高度封装性我们接触到的一般都是业务代码一个底层功能API不能轻易的获取到但是这不意味着永远用不到这些对象如果用到了就可以使用框架提供的类似Aware的接口让框架给我们注入该对象。 Aware接口 回调方法 作用 ServletContextAware setServletContext(ServletContext context) Spring框架回调方法注入ServletContextweb环境下才生效 BeanFactoryAware setBeanFactory(BeanFactory factory) Spring框架回调方法注入beanFactory对象 BeanNameAware setBeanName(String beanName) Spring框架回调方法注入当前Bean在容器中的beanName ApplicationContextAware setApplicationContext(Application application) Spring框架回调方法注入ApplicationContext对象 Spring IoC容器实例化Bean总结
http://www.zqtcl.cn/news/286993/

相关文章:

  • 如何做网站监控wordpress修改文章点赞数
  • 佛山高端网站建设报价网站的建设属于无形资产
  • 永川网站设计wordpress+用户前台
  • 晋城客运东站网站开发公司装修通知告示怎么写
  • 北京做手机网站的公司哪家好完整的网站开发
  • 建立网站的内容规划长沙网络推广哪家
  • 网站建设及优化教程百度网站优化排名
  • 医院网站推广渠道网站关键词排名不稳定
  • 类网站建设陕西省建设资格注册中心网站
  • 网站横幅图片网页设计怎么创建站点
  • 网站建设页面设计图片开个送快餐网站怎么做
  • 北京免费网站建设模板下载南江县建设局网站
  • 温岭手机网站建设义乌市网站建设
  • 西安网站制作费用哪家装修公司比较好的
  • 硅谷网站开发薪酬wordpress热门吗
  • 红酒营销型网站建设天一建设网站
  • 做网站建设公司哪家好安徽省住房建设部官方网站
  • 网站被黑咋样的柳州正规网站制作公司哪家好
  • 莱芜网站开发代理四川网络推广服务
  • 应该知道的网站网站全网建设莱芜
  • 北京网站页设计制作广州专业网站改版
  • 重庆网站建设建站收费免费外链网盘
  • 做加盟代理的网站比较好的网页网站设计
  • 兴义网站开发企业标准备案平台官网
  • 蓝彩网络科技_齐齐哈尔微信营销_齐齐哈尔网站建设会员卡管理系统哪里买
  • 织梦门户网站做大后建个人免费网站用哪个
  • 深圳市建设管理中心西安官网seo
  • 网站开发工作方案自己做的网站怎么维护
  • 潍坊建设部门管理网站做网站如何接单
  • 定制高端网站建设设计建立的近义词