Spring | BeanDefinition里面存放的究竟是什么?

BeanDefinition 在Spring框架中是一个非常核心的数据结构,它主要用来存储和描述一个Bean的配置元数据。当Spring容器启动时,它会解析配置元数据(如XML配置文件、Java配置类或注解),并将这些信息转换成一系列BeanDefinition 对象。这些对象包含了创建和管理Bean所需的所有信息

BeanDefinition 主要存放一下几类信息:

  1. Bean的类信息(beanClass):这是Bean所对应的Java类的Class对象,提示Spring容器应该实例化那个具体的类
  2. 构造方法参数(constructorArgumentValues):包含了Bean构造方法的参数值,以及参数的来源(如引用其他Bean、字面量值等)
  3. 属性值(propertyValues):包含了Bean的属性及其值,这些值可以是其他Bean的引用、字面量值、表达式等
  4. 作用域(scope):定义了Bean的生命周期和可见性,如singleton(单例)、prototype(原型)、request(每一个HTTP请求一个实例)等
  5. 依赖信息:指示了Bean依赖的其他Bean,Spring容器会确保在创建Bean前先创建并注入其依赖
  6. 初始化和销毁方法(initMethodName, destroyMethodName):指定了Bean的初始化和销毁时应调用的方法
  7. 懒加载(lazyInit):表示Bean是否在第一次请求时才实例化,对于Prototype作用域的Bean通常是默认的,但对于Singleton作用域的Bean,则需要显示设置
  8. FactoryBean信息(factoryBeanName, factoryMethodName):如果Bean是由另一个Bean(FactoryBean)创建的,这里会包含FactoryBean的名称和用于创建Bean的方法名
  9. 资源描述符(resourceDescription):描述了Bean定义的来源,如XML文件的位置或Java配置类的名称
    10.依赖检查(dependencyCheck):控制是否在Bean初始化时进行依赖检查
    11.自动装配模式(autowireMode):指定Bean的依赖如何自动装配,如byName(按名称)、byType(按类型)等
    12.Autowire候选者(autowireCandidate):指示Bean是否可以作为自动装配的候选者
    13.主Bean(primary):标记Bean是否是相同类型的Bean中的首选
    14.依赖查找(dependsOn): 指定Bean依赖于那些其他Bean的初始化
posted @ 2024-07-17 16:44  Neking  阅读(4)  评论(0编辑  收藏  举报