SpringBoot之BeanDefinitionLoader类源码学习
该类的作用
Spring 框架中用于加载和解析 Bean 定义的工具类。它主要用于从不同的资源(如 XML 文件、注解、Java 配置类等)中读取 Bean 定义,并将这些定义注册到 Spring 的 BeanFactory 或 ApplicationContext 中
基本属性
//指定的资源
private final Object[] sources;
//用于将带有相关注解的类解析为bean
private final AnnotatedBeanDefinitionReader annotatedReader;
//用于将xml中类解析为bean
private final XmlBeanDefinitionReader xmlReader;
//用于将groovy中类解析为bean
private BeanDefinitionReader groovyReader;
//用于扫描包中符合指定条件的类
private final ClassPathBeanDefinitionScanner scanner;
// 资源加载器
private ResourceLoader resourceLoader;
主要方法
/**
* 加载给定源对象的数据
* 该方法支持多种类型的源对象,包括Class、Resource、Package和CharSequence
* 如果源对象的类型不受支持,则抛出IllegalArgumentException异常
*
* @param source 数据源对象,可以是Class、Resource、Package或CharSequence类型
* @return 加载的数据,具体类型取决于源对象的类型
* @throws IllegalArgumentException 如果源对象的类型不受支持
*/
private int load(Object source) {
// 确保源对象不为null,否则抛出IllegalArgumentException异常
Assert.notNull(source, "Source must not be null");
// 如果源对象是Class类型,调用相应的load方法
if (source instanceof Class<?>) {
return load((Class<?>) source);
}
// 如果源对象是Resource类型,调用相应的load方法
if (source instanceof Resource) {
return load((Resource) source);
}
// 如果源对象是Package类型,调用相应的load方法
if (source instanceof Package) {
return load((Package) source);
}
// 如果源对象是CharSequence类型,调用相应的load方法
if (source instanceof CharSequence) {
return load((CharSequence) source);
}
// 如果源对象的类型不受支持,抛出IllegalArgumentException异常
throw new IllegalArgumentException("Invalid source type " + source.getClass());
}
原文地址:https://blog.csdn.net/weixin_44877172/article/details/145119350
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!