> 文档中心 > Spring源码系列(1)

Spring源码系列(1)

1.什么是BeanDefinition

BeanDefinition是标签的内部表现形式,BeanDefiniton是bean属性的一中承载实体(通过BeanDefiniton的属性来控制bean对象)

BeanDefinition是Spring的核心概念

BeanDefinition表示Bean定义

Spring根据BeanDefinition来创建Bean对象

2.BeanDefinition中几个重要的属性

beanClass 、 Scope 、 isLazy 、 depend on 、primary 用来表示控制bean的类型

spring在创建Bean的过程中会根据此属性来实例化得到对象

Scope:

表示一个bean的作用域

Scope等于Singleton 表示这个bean就是一个单例的bean;

Scope等于prototype表示这个bean就是一个原型的bean;

#扩展

原型模式(深克隆、浅克隆)

isLazy:

表示一个bean是不是需要懒加载

懒加载的单例bean会在第一个getBean的时候,生成该Bean,非懒加载的bean会在启动spring容器过程中,直接生成好。

depend on:
表示有个bean在创建之前所依赖的其他bean,必须在创建好这个bean之前把它依赖的其他bean创建好;

primary:

表示一个bean是主bean,在spring中一个类型的可以有多个bean对象,在创建一个bean的时候,进行依赖注入的时候,如果中spring容器中找到多个可以注入的bean,此时会判断这些bean中是否存在一个主bean,如果找到,会直接把这个主bean直接注入到对象中;

initMethodName:

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

3.@component 、@bean、 这些会被解析成为beanDefinition

4.BeanDefinition的使用

在标签中可以指定BeanDefinition中的属性

在注解中(@Component)下使用@注解的方式来使用

@Component@Scope@Primary@DependsOnpublic class Text {}

医学名词百科