曹工说Spring Boot源码(2)-- Bean Definition到底是什么,咱们对着接口,逐个方法讲解
2019-12-20 16:59
阅读目录
正文
我这里,先把
org.springframework.beans.factory.config.BeanDefinition
接口的方法再简单列一下:public interface BeanDefinition extends AttributeAccessor, BeanMetadataElement { // scope:单例 String SCOPE_SINGLETON = ConfigurableBeanFactory.SCOPE_SINGLETON; // scope:prototype String SCOPE_PROTOTYPE = ConfigurableBeanFactory.SCOPE_PROTOTYPE; // 角色:属于应用程序的bean int ROLE_APPLICATION = 0; // 角色:支持?不甚了解,先跳过 int ROLE_SUPPORT = 1; // 角色:属于框架自身的bean int ROLE_INFRASTRUCTURE = 2; // parent bean的名字 String getParentName(); void setParentName(String parentName); // 核心属性,此为bean的class名称 String getBeanClassName(); void setBeanClassName(String beanClassName); // 核心属性,本属性获取工厂bean的名称,getFactoryMethodName获取工厂方法的名称,配合使用,生成 // 本bean String getFactoryBeanName(); void setFactoryBeanName(String factoryBeanName); String getFactoryMethodName(); void setFactoryMethodName(String factoryMethodName); //scope,bean是单例的,还是每次new一个(prototype),就靠它了 String getScope(); void setScope(String scope); // 懒bean?默认情况下,都是容器启动时,初始化;如果设置了这个值,容器启动时不会初始化,首次getBean // 时才初始化 boolean isLazyInit(); void setLazyInit(boolean lazyInit); // 在本bean初始化之前,需要先初始化的bean;注意,这里不是说本bean依赖的其他需要注入的bean String[] getDependsOn(); void setDependsOn(String[] dependsOn); // 是否够资格作为自动注入的候选bean。。。如果这里返回false,那就连自动注入的资格都没得 boolean isAutowireCandidate(); void setAutowireCandidate(boolean autowireCandidate); // 当作为依赖,要注入给某个bean时,当有多个候选bean时,本bean是否为头号选手 boolean isPrimary(); void setPrimary(boolean primary); // 通过xml <bean>方式定义bean时,通过<constructor-arg>来定义构造器的参数,这里即:获取构造器参数 ConstructorArgumentValues getConstructorArgumentValues(); // 通过xml <bean>方式定义bean时,通过 <property name="testService" ref="testService"/> 这种方 式来注入依赖,这里即:获取property注入的参