Spring -- by name 和 by type

2019-03-13  本文已影响0人  qiyinger
    /** by name注入的bean key为name, value 为BeanDefinition */
    private final Map<String, BeanDefinition> beanDefinitionMap = new ConcurrentHashMap<>(256);

    /** by type注入(包括单例) key为bean的类型, value 为相应类型的所有bean的name数组 */
    /** Map of singleton and non-singleton bean names, keyed by dependency type. */
    private final Map<Class<?>, String[]> allBeanNamesByType = new ConcurrentHashMap<>(64);

    /** by type注入 单例*/
    /** Map of singleton-only bean names, keyed by dependency type. */
    private final Map<Class<?>, String[]> singletonBeanNamesByType = new ConcurrentHashMap<>(64);

这是BeanFactory中存储BeanDefinition的Map,Spring 是默认进行by type 自动注入的,所以当同一类型的BeanDefinition有多个时,是无法确定是哪一个BeanDefinition的,需要通过by name的方式注入

上一篇下一篇

猜你喜欢

热点阅读