Spring源码系列(1)BeanDefinition

1.什么是BeanDefinition

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

#Spring通过注解(Component)扫描一个类或者是按照XML(<bean/>)文件来创建一个BeanDefinition对象,通过这个BeanDefinition对象来生成Bean对象;

#Spring是基于BeanDefinition来创建一个对象的;

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、<bean> 这些会被解析成为beanDefinition

4.BeanDefinition的使用

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

<bean id="user" class="Text" lazy-init="" scope="singleton">

</bean>

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

@Component
@Scope
@Primary
@DependsOn
public class Text {
}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值