Spring4.x源码解析
Spring4.x源码解析
AnEra
厚积薄发, 天道酬勤
展开
-
Spring4.2.4 版本中的一个关于XML验证模式获取的bug
在Spring4.2.4源码的学习中发现了在Spring-core包下的org.springframework.util.xml.XmlValidationModeDetector类中对DTD验证模式获取的逻辑错误测试程序:1.先定义一个beanpackage bean;public class MyTestBean { private String testStr="testStr";...原创 2019-03-24 19:22:47 · 363 阅读 · 0 评论 -
Spring_模拟基于XML方式的SpringIOC(模拟属性注入, 构造方法注入, 自动注入)
1. 控制反转概念:控制反转是一个比较抽象的概念,举例说明。在实际生活中,人们要用到一样东西时,人们的基本想法是找到东西,比如想喝杯橙汁,在没有饮品店的日子里,最直观的做法是,要买果汁机、橙子,准备开水。请注意这是你自己“主动”创造的过程,也就是一杯橙汁需要主动创造。然而到了今时今日,由于饮品店的盛行,已经没有必要自己去榨橙汁了。想喝橙汁的想法一出现,第一个想法是找到饮品店的联系方式,通过电话...原创 2019-08-05 16:34:26 · 434 阅读 · 0 评论 -
Spring源码系列_Spring中使用的设计模式
模板方法模式spring的jdbc模板,对Spring源码的精妙真是佩服得五体投地,极为经典。spring中真是集设计模式之大成,而且用得是炉火纯青。模板方法(template method)就在spring中被大量使用,如:jdbcTemplate,hibernateTemplate,JndiTemplate以及一些包围的包装等都无疑使用了模板模式,但spring并不是单纯使用了模板方法,而...原创 2019-08-14 13:23:01 · 596 阅读 · 0 评论 -
Spring_模拟基于注解方式的SpringIOC(模拟ByType自动注入,ByName自动注入)
在阅读本博文前, 要对模拟基于XML方式的SpringIOC有所了解可以先看这篇博文: Spring源码_模拟基于XML方式的SpringIOC(模拟属性注入, 构造方法注入, 自动注入)1.思路分析对于注解方式, 无非就是在类上声明注解,告诉bean工厂这个类需要注册到容器中, 并且维护好bean之间的关系;让工厂去维护bean对象,我们需要告诉工厂哪些包下的哪些类需要注册, 因此需要...原创 2019-08-06 21:01:49 · 485 阅读 · 0 评论 -
Spring中Beanfactory和Factorybean的区别及Factorybean的应用场景
Beanfactory和Factorybean的区别BeanFacotry是spring中比较原始的Factory。如XMLBeanFactory就是一种典型的BeanFactory。原始的BeanFactory无法支持spring的许多插件,如AOP功能、Web应用等。 ApplicationContext接口,它由BeanFactory接口派生而来,ApplicationContext包含B...原创 2019-08-06 14:27:43 · 2349 阅读 · 0 评论 -
Spring4.x源码解析之IOC(一)_容器的基本实现
一、容器的基本用法bean定义:public class MyTestBean { private String testStr="testStr"; public String getTestStr() { return testStr; } public void setTestStr(String testStr) { this.testStr = testStr; }...原创 2019-04-08 17:26:31 · 232 阅读 · 0 评论 -
Spring4.x源码解析之IOC(二)_默认标签的解析
默认标签的解析spring中的标签包括默认标签和自定义标签两种,默认标签的解析是在parseDefaultElement方法中进行的,在该方法中分别对4中不同的标签(import、alias、bean和beans)进行解析//public class DefaultBeanDefinitionDocumentReader implements BeanDefinitionDocumentRea...原创 2019-04-09 16:10:34 · 156 阅读 · 0 评论 -
Spring4.x源码解析之IOC(三)_自定义标签的解析
自定义标签的解析1、自定义标签的使用扩展spring自定义标签配置大致需要以下几个步骤:创建爱你一个需要扩展的组件定义一个XSD文件描述组件内容创建一个文件,实现BeanDefinitionParser接口,用来解析XSD文件中的定义和组件定义创建一个Handler文件,扩展自NamespaceHandlserSupport,目的是将组件注册到spring容器编写Spring.ha...原创 2019-04-09 20:40:50 · 143 阅读 · 0 评论 -
Spring4.x源码解析之IOC(四)_bean的加载(1)
bean的加载对于加载bean的功能,在spring中的调用方式为:MyTestBean bean=(MyTestBean) bf.getBean(“myTestBean”)//public abstract class AbstractBeanFactory extends FactoryBeanRegistrySupport implements ConfigurableBeanFa...原创 2019-04-10 13:44:53 · 138 阅读 · 0 评论 -
Spring4.x源码解析之IOC(四)_bean的加载(2)
6、创建bean回顾createBean()方法中的内容: protected Object createBean(String beanName, RootBeanDefinition mbd, Object[] args) throws BeanCreationException { if (logger.isDebugEnabled()) { logger.debug("Cre...原创 2019-04-10 20:33:38 · 151 阅读 · 0 评论 -
Spring4.x源码解析之IOC(五)_容器的功能扩展(1)
ApplicationContext和BeanFactory两者都是用于加载bean的使用BeanFactory方式去加载XML XmlBeanFactory bf = new XmlBeanFactory(new ClassPathResource("beanFactoryTest.xml"))使用ApplicationContext方式加载XMLApplicationCont...原创 2019-04-11 16:51:51 · 165 阅读 · 0 评论 -
Spring4.x源码解析之IOC(五)_容器的功能扩展(2)
1.6 BeanFactory的后处理1.6.1激活注册的BeanFactoryPostProcessorBeanFactoryPostProcessor的用法:springIOC容器允许BeanFactoryPostProcessor在容器实例实例化任何其他的bean之前读取配置元数据, 并有可能修改它; 并且可以配置多个BeanFactoryPostProcessor,通过"orde"属...原创 2019-04-11 22:16:00 · 238 阅读 · 0 评论 -
Spring4.x源码解析之AOP(一)
1.1动态AOP使用实例(1) 创建用于拦截的beanpublic class TestBean { private String testStr="testStr"; public String getTestStr() { return testStr; } public void setTestStr(String testStr) { this.testStr=tes...原创 2019-04-12 18:52:13 · 152 阅读 · 0 评论 -
Spring4.x源码解析之AOP(二)
1.3.1 创建代理获取所有对应bean的增强器后, 就可以进行代理的创建了回顾wrapIfNecessary方法:protected Object wrapIfNecessary(Object bean, String beanName, Object cacheKey) { //如果已经处理过(targetSourcedBeans存放已经增强过的bean) if (beanNam...原创 2019-04-13 17:53:07 · 117 阅读 · 0 评论