引言 org.springframework.beans.BeanWrapper是Spring框架中重要的组件类.BeanWrapper相当于一个代理器,Spring委托BeanWrapperwancehngBean属性的填充工作.在Bean实例被InstantiatioonStrategy创建出来之后,容器主控程序将Bean实例通过BeanWrapper包装起来,这是通过调用BeanWrapper#setWrappedInstance(Object obj)方法完成的. 继承体系 BeanWr…
引言 org.springframework.beans.factory.config.BeanDefinition是配置文件< bean >元素标签在容器中地内部表示.< bean >元素标签拥有class.scope.lazy-init等配置属性,BeanDefinition则提供了相应地beanClass.scope.lazyInit类属性,BeanDefinition就像< bean >中镜中人,二者是一一对应地. 实现类 RottBeanDefinition是…
引言 org.springframework.beans.factory.support.InstantiationStrategy负责根据BeanDefinition对象创建一个Bean实例.Spring之所以将实例化Bean的工作通过一个策略接口进行描述,是为了可以方便地采用不同地实例化策略,以满足不同的引用需求,如通过CGLib类库为Bean动态创建子类在进行实例化. 常见的实现类 SimpleInstantiationStrategy是最常用的实例化策略,该策略利用Bean实现类的默认构…
引言 Spring容器就像一台构造精妙的机器,我们通过配置文件向机器传达控制信息,机器就能够按照设定的模式工作.如果将Spring容器比作一辆车,那么可以将BeanFactory看成汽车的发动机,而ApplicationContext则是一辆完整的汽车,它不但包括发动机,还包括离合器.变速器及底盘.车身.电气设备等其他组件.在ApplicationContext内,各个组件按部就班.有条不絮地完成汽车的各项功能. 内部工作机制 Spring的AbstractApplicationContext是…
bean是Spring中最核心的东西,因为Spring就像是个大水桶,而bean就像是容器中的水,水桶脱离了水便也没什么用处了,那么我们先看看bean的定义. public class MyTestBean{ private String testStr = "testStr"; public String getTestStr(){ return testStr; } public void setTestStr(String testStr) } 接下来是配置文件: <bea…
官方文档 翻译 https://waylau.gitbooks.io/spring-framework-4-reference/content/III.%20Core%20Technologies/Container%20overview.html 这个更全一些 http://spring.cndocs.tk/beans.html#beans-dependencies 4.5.1 单例范围 仅仅共享被管理的 bean 的一个实例,所有使用一个或多个 id 来匹配 bean 的结果对 bean 请…
前言 在Spring帮我们管理bean后,编写一些工具类的时候需要从容器中拿到一些对象来做一些操作,比如字典缓存工具类,在没有找到字典缓存时,需要dao对象从数据库load一次,再次存入缓存中.此时需要在util工具类中拿到ioc容器中的dao对象. 原理 spring容器在加载的时候会把ApplicationContext注入到实现了ApplicationContextAware的类中,拿到applicationContext后,可以通过getBean来拿到ioc容器中管理的对象 通过实现Di…
前一段时候我把Spring技术内幕的关于IOC原理一章看完,感觉代码太多,不好掌握,我特意又各方搜集了一些关于IOC原理的资料,特加深一下印象,以便真正掌握IOC的原理. IOC的思想是:Spring容器来实现这些相互依赖对象的创建.协调工作.对象仅仅须要关系业务逻辑本身就能够了. SpringIOC容器的执行步骤是: 1.资源定位,即首先要找到applicationContext.xml文件 2.BeanDefinition的加载,把XML文件里的数据统一加载到BeanDefinition中,…
方法一:在初始化时保存ApplicationContext对象方法二:通过Spring提供的工具类获取ApplicationContext对象方法三:继承自抽象类ApplicationObjectSupport方法四:继承自抽象类WebApplicationObjectSupport方法五:实现接口ApplicationContextAware 常用的5种获取spring 中bean的方式总结: 方法一:在初始化时保存ApplicationContext对象 ApplicationContext…
经过<基于纯Java代码的Spring容器和Web容器零配置的思考和实现(1) - 数据源与事务管理>和<基于纯Java代码的Spring容器和Web容器零配置的思考和实现(2) - 静态资源.视图和消息器>两篇博文的介绍,我们已经配置好了Spring所需的基本配置.在这边博文中,我们将介绍怎么使用这些配置到实际项目中,并将web.xml文件替换为一个Java类. 我们使用Java代码来配置Spring,目的就是使我们的这些配置能够复用,对于这些配置的复用,我们采用继承和引入来实现…