这篇文章主要介绍“SpringBean中Bean的注册是什么”,在日常操作中,相信很多人在SpringBean中Bean的注册是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”SpringBean中Bean的注册是什么”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!这里主要围绕BeanDefinitionReaderUtils#registerBeanDefinition
展开分析下Bean注册过程上面无论是注册bd还是建立alias-beanName之间的关系,均用到了BeanDefinitionRegistry
,因此我们就以它为突破口来展开对图中常用接口或类进行说明:ListableBeanFactory
集合类型BeanFactory 提供一种可以查找所有Bean实例的能力getBeanNamesForType(Class)
根据类型去查找Bean名称列表不会强制Bean的初始化,可从源码中看出来getBeansOfType(Class)
根据类型去查找Bean实例列表,会强制Bean的初始化,可从源码中看出来getBeanNamesForAnnotation(Class)
根据注解类型获取Bean名称列表getBeansWithAnnotation(Class)
根据注解类型获取Bean实例列表findAnnotationOnBean(String,Class)
根据指定名称+标注类型获取Bean实例Hierarchical([harkkl])BeanFactory
层次性BeanFactory,有父子容器的概念,可在ConfigurableListableBeanFactory
设置其父容器getParentBeanFactory()
获取父容器免费云主机域名boolean containsLocalBean(String name)
在当前容器中查找是否存在该名称的Bean实例SingletonBeanRegistry
单实例BeanFactory
,与单实例有关ConfigurableBeanFactory
可配置的BeanFactory
,这个一般不用于应用程序,是给其他BeanFactory扩展用的。的确,定义了很多配置方法ConfigurableListableBeanFactory
可配置的集合类型的BeanFactoryAutowireCapableBeanFactory
提供具有自动装配能力的BeanFactory透过继承体系可以看出,BeanDefinitionRegistry
的实现类是DefaultListableBeanFactory
,该类同时实现了诸多接口,可谓是BeanFactory中集大成者,因此我们到DefaultListableBeanFactory
中阅读下bd注册及别名注册的源码先来分析下DefaultListableBeanFactory
的几个重要的成员属性上面两个属性都比较重要,两者结合使用的话可以实现bd的顺序访问(其实就是遍历beanDefinitionNames集合时,使用beanDefinitionMap去获取bd)其实分析下来发现Bean注册的过程还是比较容易理解的,下面试着总结一下:若bd未被注册过,则将bd信息存入BeanDefinitionMap等集合中若bd已被注册过,允许覆盖注册的情况下,将bd信息存入BeanDefinitionMap等集合中,并清除已被缓存的同名bd信息下面看一下清除bd信息的代码逻辑看了Bean的注册,再来看别名的注册 发现流程比较清晰,基本上一目了然。alias与beanName的映射关系,为根据名称查找Bean又提供了一种思路。就是说除了根据beanName外,也可以根据alias去查找Bean。这部分源码如下到此,关于“SpringBean中Bean的注册是什么”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注百云主机网站,小编会继续努力为大家带来更多实用的文章!
相关推荐: springboot跨域问题带来的BUG怎么解决
这篇文章主要介绍了springboot跨域问题带来的BUG怎么解决的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇springboot跨域问题带来的BUG怎么解决文章都会有所收获,下面我们一起来看看吧。前端用了个富文本插件 Uedi…
免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。