终于接触到spring的核心了,心情有点激动,但是呢,又很纠结,纠结的在于源码的复杂性可能要超出我的预料,而我知识的短板也将更集中的展现出来
不过呢,有一句话叫良药苦口利于病,还有一句话叫难者不会会者不难,这两个对于我来说,都是合适的,因为它对我实实在在有利,所以才有必要去看,因为难所以要下更大的努力去做,对于我来说,这个仿佛就是一个宝库,里面有很多的宝藏等待发掘,而我就是那个盗墓贼(说的似乎不怎么好听呀),当我把这个宝库全部都发掘出来的时候,那么成功离我还会远吗
好了,言归正传
大家先看看XmlBeanFactory的实现源码吧
org.springframework.beans.factory.xml.XmlBeanFactory
public class XmlBeanFactory extends DefaultListableBeanFactory {
private final XmlBeanDefinitionReader reader = new XmlBeanDefinitionReader(this);
public XmlBeanFactory(Resource resource) throws BeansException {
this(resource, null);
}
public XmlBeanFactory(Resource resource, BeanFactory parentBeanFactory) throws BeansException {
super(parentBeanFactory);
this.reader.loadBeanDefinitions(resource); //加载BeanDefinitions信息
}
}
这个方法定义的很简单,我想大家仅仅通过这个,是无法了解这么庞大复杂多样的功能难道就仅仅是通过这么简单的语句定义的?要我说,这个类更重要的目的就是“牵一发而动全身”
当实例化这个类以后呢,字段首先进行实例化,然后紧接着调用其构造器,那么我们先看看字段实例化以后都引发了什么样的效果
org.springframework.beans.factory.xml. XmlBeanDefinitionReader
public XmlBeanDefinitionReader(BeanDefinitionRegistry registry) {
super(registry);
}
这个是我们实例化以后的这个类的构造器,或许大家要有疑问了,入参应该为XmlBeanFactory或者其子类呀,为何是这个?
我通过查看源码发现,XmlBeanFactory的父类实现了它的接口,所以可以转换成这个类型
言归正传,我们还是先看看它父类的构造器吧
org.springframework.beans.factory.support. AbstractBeanDefinitionReader
protected AbstractBeanDefinitionReader(BeanDefinitionRegistry registry) {
Assert.notNull(registry, "BeanDefinitionRegistry must not be null");
this.registry = registry;
// Determine ResourceLoader to use.
if (this.registry instanceof ResourceLoader) {
this.resourceLoader = (ResourceLoader) this.registry;
}
else {
this.resourceLoader = new PathMatchingResourcePatternResolver();
}
}
在这个构造器里,它做了两个方面的事情,第一个就是实例化了BeanDefinitionRegistry(BeanDefinition的注册表),另一个就是实例化了ResourceLoader(资源加载器),
分享到:
相关推荐
作为初学者,了解并掌握这些基础知识对于学习 Python 3.0 至关重要。以下是一些关键的知识点,它们在 "www.runoob.com" 提供的菜鸟教程中应该有所涵盖: 1. **基础语法**: - **变量与数据类型**:Python 支持整型...
马士兵老师提供的讲解,对于菜鸟或者是刚学习javaweb和SSH框架的人来说可谓是福音,马老师讲的内容非常详细,同时还会灌输学者一些在实际工作和开发中的一些技巧,特别是代码规范和编程习惯是非常重要的,所以特意...
总的来说,Python的学习是一个循序渐进的过程,从环境配置、基础语法学习,到实践操作和解决问题,每一步都是为了更好地掌握这门语言。保持耐心,多动手实践,你将成为一名熟练的Python程序员。
在本文中,我们将深入探讨Spring的源码,尤其是针对"菜鸟"级别的开发者如何逐步理解并掌握Spring的核心机制。 首先,源码解读对于任何开发者来说都是提升技术能力的重要途径。通过阅读源码,我们可以更直观地了解...
struts2+hibernate3.2+spring3.0实现简单的增删改查
在这个系列的学习中,我们将深入探讨Spring5的核心原理,通过分析源码来揭示其内在的工作机制,并结合实战应用,提升对Spring5的理解和运用能力。 一、Spring5新特性 1. 支持Java 9及以上的版本:Spring5全面支持...
34--[菜鸟闯关].zip源码scratch2.0 3.0编程项目源文件源码案例素材源代码34--[菜鸟闯关].zip源码scratch2.0 3.0编程项目源文件源码案例素材源代码34--[菜鸟闯关].zip源码scratch2.0 3.0编程项目源文件源码案例素材源...
springcloud简单项目搭建,菜鸟学习Spring Cloud集成相关优质项目推荐 这些项目是Spring Cloud官方项目或是对Spring Cloud进行了有益的补充以及基于Spring Cloud最佳实践。
本教程专为初学者设计,旨在帮助“菜鸟”快速掌握Spring的基本概念和实战技巧。 在Spring入门阶段,首先要理解的是依赖注入(DI)。DI是一种设计模式,它允许我们解耦组件,让它们之间通过接口而非具体的实现进行...
通过学习和实践《菜鸟商城》项目,开发者不仅可以掌握Java后端和安卓客户端的开发技术,还能深入了解电商系统的架构设计和业务逻辑,为今后的项目开发积累宝贵经验。同时,该项目也适合初学者进行实战演练,提升自己...
4. **配置Redis**: 在Spring的配置文件中添加RedisConnectionFactory的配置,并设置Redis服务器的相关属性,如主机地址、端口、密码等。 **Spring MVC+Mybatis+Redis的分布式应用** 整合以上三个组件后,我们可以在...
项目概述:深入Python学习实战源码解析 本项目以Python为主要开发语言,基于菜鸟教程的指导,深入探索和实践Python编程。项目包含62个文件,其中38个为...简洁描述:基于菜鸟教程的Python学习实践记录与源码解析集锦。
4、libs smarty库 5、templates_c smarty自动生成的文件 6、JS 常用的JS(当时顺手放的) 7、other 乱78遭的东西,以前学HTML时做的 8、html 生成的HTML文件自动放此处 主要文件 说明: controller 文件夹中 ...
易语言源码易语言菜鸟背包游戏源码.rar 易语言源码易语言菜鸟背包游戏源码.rar 易语言源码易语言菜鸟背包游戏源码.rar 易语言源码易语言菜鸟背包游戏源码.rar 易语言源码易语言菜鸟背包游戏源码.rar 易语言源码...
您不需要任何Linux技能也能阅读本教程,Linux菜鸟过关全面解决您的Linux之旅问题。您现在要做的是了解一些Linux知识与安装方法,按照本教程的顺序阅读即可。本教程可以作为您短期突破Linux安装的教材,这一切都不...
【仿菜鸟商城系统(源码)】是一款专为学习目的设计的电商系统,它提供了从用户界面到后台管理的一整套功能,可以帮助开发者理解和实践电子商务平台的构建过程。该系统模仿了真实的在线购物平台——菜鸟网络,因此在...
51菜鸟到arm高手51菜鸟到arm高手51菜鸟到arm高手51菜鸟到arm高手51菜鸟到arm高手51菜鸟到arm高手51菜鸟到arm高手51菜鸟到arm高手
对于spring源码的深度解析,适合菜鸟向中级进阶的时候看看
jar包:项目中除了使用了struts2,hibernate3.0和spring1.8以外(用spring2.0的包也可以.不能低于1.8的包.)还是用了junit,ajax,第三方的table组件.等等.所以需要下载相对应的包. 为了上传jar.我专门申请了一个网盘.所有...
总的来说,“菜鸟商城”源码是一个功能完备、注释详尽的Android商城应用实例,对于学习Android开发和实际项目经验的积累都有很大帮助。通过深入研究这份源码,开发者不仅可以掌握Android应用开发的基本技能,还能...