AbstractBeanDefinitionReader解读
AbstractBeanDefinitionReader解读
AbstractBeanDefinitionReader简介
AbstractBeanDefinitionReader是读取BeanDefinition一个抽象类,他已经实现了部分BeanDefinitionReader接口的部分方法,并且内部维护着一个成员变量registry,这个registry变量是BeanDefinitionRegistry接口的实现类对象,BeanDefinitionRegistry接口提供了关于 BeanDefinition 的注册、移除、查询等一系列的操作。
AbstractBeanDefinitionReader部分源码
我们主要读AbstractBeanDefinitionReader的成员属性和构造方法
public abstract class AbstractBeanDefinitionReader implements BeanDefinitionReader, EnvironmentCapable {
/** Logger available to subclasses. */
protected final Log logger = LogFactory.getLog(getClass());
//实现BeanDefinitionRegistry接口的通常都是IOC容器
private final BeanDefinitionRegistry registry;
//一些IOC容器自身还是ResourceLoader
@Nullable
private ResourceLoader resourceLoader;
//加载bean用的类加载器
@Nullable
private ClassLoader beanClassLoader;
//环境
private Environment environment;
//beanName生产器,没有bean名是会用该生成器生成
private BeanNameGenerator beanNameGenerator = DefaultBeanNameGenerator.INSTANCE;
protected AbstractBeanDefinitionReader(BeanDefinitionRegistry registry) {
Assert.notNull(registry, "BeanDefinitionRegistry must not be null");
this.registry = registry;
// Determine ResourceLoader to use.
//如果IOC容器也实现了ResourceLoader,定义
if (this.registry instanceof ResourceLoader) {
this.resourceLoader = (ResourceLoader) this.registry;
}
else {
this.resourceLoader = new PathMatchingResourcePatternResolver();
}
// Inherit Environment if possible
//如果IOC容器中有environment
if (this.registry instanceof EnvironmentCapable) {
this.environment = ((EnvironmentCapable) this.registry).getEnvironment();
}
else {
this.environment = new StandardEnvironment();
}
}
//..............
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)