spring ObjectFactory
AspectJAwareAdvisorAutoProxyCreator implements PostProcessor
postProcessorAfterInitialization(Object bean, String beanName)
1.在这个方法中 植入 AOP
2.这个方法的调用 initializeBean方法
doCreateBean(beanName, BeanDefinition, args) --> initializeBean --> invokeAwareMethods
AutowireCapableBeanFactory
doCreateBean(String beanName, BeanDefinition ,args)
// 单例 && 是否允许循环依赖 &&正在创建中
earlySingletonExposure
将创建Bean的ObjectFactory放入缓存,ObjectFactory传入真正创建的“bean”对象,调用ObjectFactory的getObject时调用getEarlyBeanReference返回传入的“bean”,这个“bean”是相同的对象(“==”),这样实现了循环引用
addSingletonFactory(beanName, new ObjectFactory() {
@Override
public Object getObject() {
return getEarlyBeanReference(beanName, beanDefintion, bean);
}
});
AbstractBeanFactory 中 doGetBean(String name, Class<?> requiredType, Object[] args, typecheckOnly) 中
sharedSingleton = getSingleton(beanName, new ObjectFactory() {
@Override
public Object getObject() {
return createBean(beanName, beanDefinition,args);
}
})
这个也用到ObjectFactory 是直接创建了 singleton并存缓存 ,注意和上面区分
spring ObjectFactory的更多相关文章
- Spring框架及IOC容器
Spring是一个非常活跃的开源框架, 它是一个基于IOC和AOP来构架多层JavaEE系统的框架,它的主要目地是简化企业开发.Spring以一种非侵入式的方式来管理你的代码, Spring提倡”最少 ...
- 在Struts2中集成Spring详细讲解
Spring的官方定义是:一个轻量级的IoC和Aop容器框架,它使用了一种叫做依赖注入的技术. 所谓依赖注入,就是指将创建对象以及协议依赖对象之间合作的责任从对象自身中转移到"工厂" ...
- Spring核心技术(十)——JSR-330标准注解
从Spring 3.0开始,Spring开始支持JSR-330标准的注解(依赖注入).这些注解和Spring注解扫描的方式是一直的,开发者只需要在classpath中配置相关的jar包即可. 如果开发 ...
- Struts2整合Spring方法及原理
一. Struts 2框架整合Spring步骤 1. 复制文件.复制struts2-spring-plugin-x-x-x.jar和spring.jar到WEB-INF/lib目录下.其中的x对应 ...
- 通常Struts框架会自动地从action mapping中创建action对象
开发者不必在Spring中去注册action,尽管可以这么去做,通常Struts框架会自动地从action mapping中创建action对象 struts2-spring-plugin-x-x-x ...
- struts2中常用constant命令配置
struts.objectFactory这个属性用 于说明Struts2的 对象池创建工厂,Struts2也有自己的对象池,就像Spring那样,在配置文件中你可以引用对象池中的对象,你可以借助于Sp ...
- 从一次编译出发梳理概念: Jetty,Jersey,hk2,glassFish,Javax,Jakarta
从一次编译出发梳理概念: Jetty,Jersey,hk2,glassFish,Javax,Jakarta 目录 从一次编译出发梳理概念: Jetty,Jersey,hk2,glassFish,Jav ...
- spring3+struts2+hibernate3整合出现的问题,No mapping found for dependency [type=java.lang.String, name='struts.objectFactory.spring.enableAopSupport']
七月 11, 2016 3:49:24 下午 org.apache.tomcat.util.digester.SetPropertiesRule begin警告: [SetPropertiesRule ...
- struts2中的constant介绍之struts.objectFactory与spring的整合
struts2提供给我们更为灵活的设计,他的很多东西都是可以手动配置的,下面介绍下他的一些 常用的constant作用和配置 struts.objectFactory这个属性用于说明Struts2的 ...
随机推荐
- 如何把本地文件上传至github?
(都说git好用,但我觉得git把我弄得像个git……在反反复复用git bash的命令行上传失败了N次之后,终于可以用命令行把文件上传到GitHub了 这中间,还要感谢网络上的各种git教程!!!) ...
- freetye2使用
使用环境和版本:qt ubuntu 16.04 freetype-2.10.0 1.下载 https://sourceforge.net/projects/freetype/files/freet ...
- VS 特殊注释
任务注释(添加此注释后,点击视图->任务列表,可以看到TODO注释的位置)://TODO: (未实现)……//UNDONE:(没有做完)……//HACK:(修改)……
- caoz的梦呓:信息安全攻防杂谈
猫宁!!! 参考链接:https://mp.weixin.qq.com/s/O0zLvuWPRPIeqnRooNEFYA 旧文我提过一句话,信息安全防御这事,在业内,三分靠技术,七分靠人脉. 在知识星 ...
- 云计算Openstack介绍(1)
一.云计算的前世今生 所有的新事物都不是突然冒出来的,都有前世和今生.云计算也是IT技术不断发展的产物. 要理解云计算,需要对IT系统架构的发展过程有所认识. 请看下 IT系统架构的发展到目前为止大致 ...
- 【Linux开发】linux设备驱动归纳总结(五):1.在内核空间分配内存
linux设备驱动归纳总结(五):1.在内核空间分配内存 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx ...
- Azure Blob 存储简介
Azure Blob 存储是 Microsoft 提供的适用于云的对象存储解决方案. Blob 存储最适合存储巨量的非结构化数据. 非结构化数据是不遵循特定数据模型或定义(如文本或二进制数据)的数据. ...
- 天勤考研数据结构笔记—栈的C语言实现
栈的基本概念 栈的定义:栈是一种只能在一端进行插入或删除操作的线性表.其中允许进行插入或删除的一端称为栈顶(top).栈顶是由一个称为栈顶指针的位置指示器(其实就是一个变量,对于顺序栈,就是数组索引, ...
- spring简单crud配置文件说明
字体设置:代码 14px 文字 幼圆 15px 1.在pom.xml下导入依赖包 (1)Spring四个核心依赖包 <dependency> <groupId>org.spr ...
- SQL的循环嵌套算法:NLP算法和BNLP算法
MySQL的JOIN(二):JOIN原理 表连接算法 Nested Loop Join(NLJ)算法: 首先介绍一种基础算法:NLJ,嵌套循环算法.循环外层是驱动表,循坏内层是被驱动表.驱动表会驱动被 ...