Head first Spring

Spring

BeanDefinition

BeanDefinition表示Bean定义,Spring根据BeanDefinition来创建Bean对象,
BeanDefinition有很多的属性来描述Bean,BeanDefinition是Spring中非常核心
的概念。

BeanDefinition中重要的属性

  • beanClass

表示一个Bean的类型,比如UserService.class,Spring在创建Bean的过程中会根据此属性来实例化得到对象。

  • scope

表示一个bean的作用域,

scope等于singleton,该bean就是一个单例bean

scope等于prototype,该bean就是一个原型bean

  • isLazy

表示一个bean是不是需要懒加载,原型bean的isLazy属性不起作用,懒加载的单例的Bean,会在第一次getBean的时候生成该bean,非懒加载的单例bean,则会在Spring启动过程中直接生成好。

  • dependsOn

表示一个bean在创建之前所依赖的,它所依赖的这些bean得先全部创建好。

  • primary

表示一个bean是主bean,在Spring中一个类型可以有多个bean对象,在进行依赖注入时,如果根据类型找到了多个bean,此时会判断这些bean中是否存在一个主bean,如果存在,则直接将这个bean注入给属性

  • initMethodName

表示一个bean的初始化方法,一个bean的生命周期过程中有一个步骤叫初始化。Spring会在这个步骤中去调用bean的初始化方法,初始化逻辑由程序员自己控制,表示程序员可以自定义逻辑对bean进行加工。