首页 > 代码库 > spring源码——资源的注册及依赖注入
spring源码——资源的注册及依赖注入
一 注册
注册过程并不复杂,就是把解析得到的beandefinition设置到hashmap中去。需要注意的是,如果遇到同名的beandefinition,需要去判断allowbeandefinitionoverriding属性,如果不允许会抛出异常。把bean的名字存入beandefinitionnames,且beanname会作为map的key ,beandefinition作为value。
这里的map名字是beandefinitionmap,,它被ioc容器持有。
至此,ioc的初始化就完成了。
二 依赖注入
依赖注入的过程是用户第一次向ioc容器索要bean时触发的。
实际的方法为dogetbean(参数省略),在这个方法中有几个要注意的点:
2.1 会先从缓存中取得bean,处理那些已经被创建过的单例模式的bean,是为了不重复的创建
2.2 检查是否能在当前的beanfactory中取到需要的bean,如果在当前的工厂中取不到,则到父beanfactory中去取;如果父beanfactory中仍然没有,会一直向上查找;
2.3 获取当前bean的所有依赖bean,这样会出发getbean的递归调用,直到取到一个没有。
bean就是根据beandefinition的定义生成的。
有几个递归的地方:
在上下文体系中查找需要的bean和创建bean时;
在依赖注入时,得到当前bean的依赖bean,同时也出发对依赖bean的创建和注入;
spring源码——资源的注册及依赖注入
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。