Spring学习(1)--容器的基本实现,标签解析

1.Spring源码下载

spring-framework
本地运行需要安装gradle,个人经验,需要idea版本高一点,如果idea版本比较低,gradle使用会报错。我使用idea2019.2

2.Spring小例子

2.1.先自定义一个bean

public class MyTestBean {
	private static Log log= LogFactory.getLog(MyTestBean.class);
	private  	String  testStr="test";

	public String getTestStr() {
		return testStr;
	}

	public void setTestStr(String testStr) {
		this.testStr = testStr;
	}

	public  void destroy(){
		log.info("destroy");
	}
}

2.2.增加配置文件

	<bean id="myTestBean" class="org.springframework.beans.factory.xml.MyTestBean" destroy-method="destroy"/>

2.3. 测试

@Test
	public void testSimpleLoad(){
		BeanFactory  bf=new XmlBeanFactory(new ClassPathResource("org/springframework/beans/factory/xml/beanFactoryTest.xml"));
		MyTestBean bean=(MyTestBean)bf.getBean("myTestBean");
		assertThat("test").isEqualTo(bean.getTestStr());
	}

2.4 测试结果

10:20:39.450 [Test worker] DEBUG o.s.b.f.x.XmlBeanDefinitionReader - Loaded 2 bean definitions from class path resource [org/springframework/beans/factory/xml/beanFactoryTest.xml]
10:20:39.485 [Test worker] DEBUG o.s.b.f.x.XmlBeanFactory - Creating shared instance of singleton bean 'myTestBean'
BUILD SUCCESSFUL in 2m 7s
94 actionable tasks: 16 executed, 78 up-to-date
10:20:40: Tasks execution finished ':integration-tests:cleanTest :integration-tests:test --tests "org.springframework.beans.factory.xml.BeanFactoryTest.testSimpleLoad"'.

3.容器的基本实现

3.1 容器的基本组成部分

从2章节的小例子可以看出,Spring主要分为以下几部分
(1)读取配置文件;
(2)根据配置文件招待对应的类的配置,并实例化;
(3)调用实例化的实例。

3.2核心类

(1) DefaultListableBeanFactory
该类主要作用是注册或者获取bean,XmlBeanFactory 在DefaultListableBeanFactory的基础上增加了 reader属性,主要用于从xml文档中读取BeanDefinition

(2) XmlBeanDefinitionReader
xml配置文件读取是spring的重要功能,可以从此类中梳理出资源文件读取,解析和注册的大致脉络
a. 通过继承AbstractBeanDefinitionReader使用ResourceLoader将资源文件路径转换为对应的Resource文件;
b.通过DocumentLoader对Resouce文件急性转换,将Resouce文件转换为Document文件;
c.通过DefaultBeanDefinitionDocumentReader对Document进行解析,并使用BeanDefinitionParserDelegate对Element进行解析。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值