Spring中如何避免bean别名循环依赖
在Spring bean的配置中,可以为bean配置一个别名。但在配置别名时,开发人员可能会不小心将别名配置成一个循环。Spring会检测出这种情况并且抛出一个异常。
1 | <!-- 这种循环的别名配置会抛异常 --> |
设置别名
在Spring中,与此相关的有两个Map。一个用于保存beanName与BeanDefinition的映射信息,一个用于保存aliasName与beanName的映射信息。
1 | /** Map of bean definition objects, keyed by bean name. */ |
例如,当我们需要为A新增一个别名B时,为避免成环,会检测A是否是B的别名。若是的话,则会抛出异常。
1 | /** |
使用别名
bean的别名可能会组成一列,即A的别名是B,B的别名是C。Spring用以下方式去找到别名的正式名。
1 | /** |