02_spring解析xml封装配置

bean工厂

BranFactory:spring体系底层工厂,定义工厂的基本操作
HierarchicalBeanFactory:父子容器的管理
AutowireCapableBeanFactory:自动注入的能力包含 initializeBean destroyBean
ListableBeanFactory:获取相关的配置信息 
	getBeanDefinitionNames:返回所有bean名称
	containsBeanDefinition:是否存在bean
ConfigurableBeanFactory:可配置工厂 
	addBeanPostProcessor:添加一个新的BeanPostProcessor,它将应用于这个工厂创建的bean。在工厂配置期间调用 注册后处理器

在这里插入图片描述

读取xml配置

Resource:从底层资源(如文件或类路径资源)的实际类型抽象出来的资源描述符的接口。
	UrlResource:可以从网络读取配置文件
	ClassPathResource:读取classpath下的文件
BeanDefinition:BeanDefinition描述一个bean实例,该实例具有属性值、构造函数参数值以及由具体实现提供的进一步信息。 这只是一个最小的接口:主要目的是允许BeanFactoryPostProcessor自省和修改属性值和其他bean元数据。
	setBeanClassName:指定此bean定义的bean类名。 类名可以在bean工厂后处理期间修改,通常用解析后的类名替换原始的类名。 
	setScope:重写此bean的目标作用域,指定一个新的作用域名称。
	setLazyInit:设置该bean是否应该懒加载。 如果为false, bean将在启动时由执行单例初始化的bean工厂实例化
	setDependsOn:设置初始化此bean所依赖的bean的名称。bean工厂将保证首先初始化这些bean。
	setPrimary:设置此bean是否为主要自动候选对象。如果在多个匹配的候选对象中只有一个bean的值为真,那么它将作为首选
	setInitMethodName:设置初始化方法的名称
	setDestroyMethodName:设置销毁方法的名称
	

02_

代码示例

	//XmlBeanFactory 过期 被  DefaultListableBeanFactory and XmlBeanDefinitionReader替换
	XmlBeanFactory xmlBeanFactory = new XmlBeanFactory(new ClassPathResource("spring.xml"));
	User user = (User)xmlBeanFactory.getBean("user");
	System.out.println(user);

XmlBeanDefinitionReader: 对xml进行解析 将数据封装到 beanDefinition

DefaultListableBeanFactory :beanFacctory的子类
	

正式解析xml bean标签

在这里插入图片描述

(1)解析xml bean标签信息封装BeanDefinition

在这里插入图片描述

(2)解析好的BeanDefinition注册存储

在这里插入图片描述

调用 DefaultListableBeanFactory的 registerBeanDefinition 方法
	//bean定义对象的映射,按bean名称键。
	private final Map<String, BeanDefinition> beanDefinitionMap = new ConcurrentHashMap<>(256);
	//按注册顺序排列的bean定义名称列表。
	private volatile List<String> beanDefinitionNames = new ArrayList<>(256);
	//保存beanName和beanDefinition
	this.beanDefinitionMap.put(beanName, beanDefinition);
	this.beanDefinitionNames.add(beanName);

至此完成解析

此时BeanFactory 已经获取到bean的配置。解析xml完成。
下一步进行对象的创建。

在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值