spring_bean_loader
2016-09-27 21:26:46 0 举报
Spring Bean Loader是一个用于在Spring应用程序中加载和管理Bean的工具。它提供了一种灵活的方式来加载和注册Bean,使得开发人员可以在不同的上下文中使用不同的Bean配置。通过使用Spring Bean Loader,可以实现Bean的动态加载、懒加载以及条件加载等功能。此外,Spring Bean Loader还支持自定义的Bean加载策略,可以根据实际需求进行配置。总之,Spring Bean Loader为Spring应用程序提供了更加灵活和高效的Bean管理方式。
作者其他创作
大纲/内容
通过类加载器得到相应的资源
Opt | Alt | Loop
refreshBeanFactory()
通过XmlBeanDefinitionReader加载bean定义这里设计了层层调用,有好多重载方法,主要就是加载Spring所有的配置文件(可能会有多个),以备后面解析,注册之用。
加载出所有的类文件
Set candidates = findCandidateComponents(basePackage);
ClassPathXmlApplicationContext
ApplicationContext ctx = new ClassPathXmlApplicationContext(\"bean.xml\");//读取bean.xml中的内容\t\t Person p = ctx.getBean(\"person\
String packageSearchPath = ResourcePatternResolver.CLASSPATH_ALL_URL_PREFIX + resolveBasePackage(basePackage)
扫描到的所有的类
加载所有的类
ClassPathBeanDefinitionScanner去扫描配置文件中的包中的所有类。
obtainFreshBeanFactory()
delegate.parseCustomElement(ele)
ClassLoader cl = getClassLoader(); Enumeration resourceUrls = (cl != null ? cl.getResources(path) : ClassLoader.getSystemResources(path)); Set result = new LinkedHashSet(16);
refresh()
假设我们配置的需要扫描的包名为com.geeekr.service,那么packageSearchPath的值就是classpath*:com.geeekr.service/**/*.class,意思就是com.geeekr.service包(包括子包)下所有class文件;如果配置的是*,那么packageSearchPath的值就是classpath*:*/**/*.class。这里的表达式是Spring自己定义的。Spring会根据这种表达式找出相关的class文件。
用来生成相应的BeanFactory
解析xml文件,根据不同的xml节点调用不同的类解析类
parse()
loadBeanDefinitions((XmlBeanDefinitionReader reader)
Resource[] resources = this.resourcePatternResolver.getResources(packageSearchPath);
收藏
0 条评论
回复 删除
下一页