随笔分类 - Spring源码解析
摘要:当经历过resolveBeforeInstantiation方法后,程序有两个选择。如果创建了代理或者说重写了InstantiationAwareBeanPostProcessor的postProcessBeforeInstantiation方法并在方法postProcessBeforeinstan
阅读全文
摘要:5.6.1什么是循环依赖、循环调用 循环依赖:实例化bean是一个复杂的过程。循环依赖就是两个或者多个bean相互之间持有对方,比如TestA引用TestB,TestB引用TestA,则它们最终反映为一个环。 循环调用:循环调用是方法之间的环调用。循环调用是无法解决的,除非有终结条件,否则就是死循环
阅读全文
摘要:AbstractAutowireCapableBeanFactory protected Object createBean(String beanName, RootBeanDefinition mbd, @Nullable Object[] args) throws BeanCreationEx
阅读全文
摘要:DefaultSingletonBeanRegistry public Object getSingleton(String beanName, ObjectFactory<?> singletonFactory) { Assert.notNull(beanName, "Bean name must
阅读全文
摘要:让我们尝试打开"5.bean的加载 - 3) bean的实例化的大门": AbstractBeanFactory protected Object getObjectForBeanInstance( Object beanInstance, String name, String beanName,
阅读全文
摘要:DefaultSingletonBeanRegistry public Object getSingleton(String beanName) { //参数true设置标识允许早期依赖(提前引用) return getSingleton(beanName, true); } protected O
阅读全文
摘要:以applicationContext.getBean("text")为入口,开始bean的加载。 AbstractBeanFactory public Object getBean(String name) throws BeansException { return doGetBean(name
阅读全文
摘要:一般情况下,Spring通过反射机制利用bean的class属性指定实现类来实例化bean。在某些情况下,实例化bean的过程比较复杂,如果按照传统的方式,则需要在<bean>中提供大量的配置信息。配置方式的灵活性是受限的,Spring为此提供了一个org.SpringFramwork.bean.f
阅读全文
摘要:自定义标签的解析过程入口: DefaultBeanDefinitionDocumentReader protected void parseBeanDefinitions(Element root, BeanDefinitionParserDelegate delegate) { //beans下的
阅读全文
摘要:很多情况下,我们需要为系统提供可配置化的支持,简单的做法可以直接基于Spring的标准bean来配置,但是配置较为复杂或者需要更多丰富控制的时候,会显得笨拙。此时Spring提供了可拓展的支持,拓展Spring自定义标签大致需要一下几个步骤: 创建一个需要拓展的组件 定义一个XSD文件描述组件内容
阅读全文
摘要:3.2alias标签解析 终于解析完了默认标签中对bean标签的解析,解析来对配置文件中import标签、alias标签、beans标签进行分析。 alias标签,别名标签。在配置文件中,有两种声明别名的方式。 1)bean标签的name属性(name支持配置多个,可以用,;分隔) <bean id
阅读全文
摘要:3.1.2AbstrctBeanDefiniton属性 至此我们完成了XML文档中的bean标签到GenericBeanDefinition对象的转换,也就是说到这里,XML中所有配置都可以在GenericBeanDefinition实例中找到对于的位置。 GenericBeanDefinition
阅读全文
摘要:默认标签解析是在parseDefaultElement中进行的。下面函数功能一目了然,分别对四种标签(import,alias,bean,beans)做不同处理。 DefaultBeanDefinitionDocumentReader private void parseDefaultElement
阅读全文
摘要:XmlBeanDefinitionReader public int registerBeanDefinitions(Document doc, Resource resource) throws BeanDefinitionStoreException { BeanDefinitionDocume
阅读全文
摘要:XmlBeanDefinitionReader protected Document doLoadDocument(InputSource inputSource, Resource resource) throws Exception { return this.documentLoader.lo
阅读全文
摘要:BeanFactory bf = new XmlBeanFactory(new ClassPathResource("beanFactory.xml")); 初始化XmlBeanFactory逻辑的时序图: 2.5.1读取配置文件(资源)的方式 对于不同来源的资源文件都有相应的Resource实现。
阅读全文
摘要:2.4.2核心类介绍1.DefaultListableBeanFactoryAliasRegistry:定义对Alias的简单增删改查操作。SimpleAliasRegistry:只要使用map作为alias的缓存。并实现AliasRegistry接口。SingletonBeanRegistry:定
阅读全文
摘要:1.创建一个Bean2.将Bean注入Spring容器3.从容器中获取bean直接使用BeanFactory作为容器对于Spring的使用并不多见。在企业级应用开发中大多数使用ApplicationContext。从上述功能中Spring到底做了什么:1)读取配置文件beanFactoryTest.
阅读全文

浙公网安备 33010602011771号