SpringBoot中Spring如何自动创建Bean对象

在这里插入图片描述
Bean对象:在Spring中交给Spring自动创建,不需要我们手动去new,所创建的对象,都叫Bean对象。
Spring怎么知道什么对象应该交给他创建呢?类的字节码对象上有注解注释时,他所需要创建的对象,都交给spring创建。

我们知道,Spring帮我们自动创建Bean对象,那么spring底层是如何执行的呢?

1.启动SpringBoot,读取SpringBoot下字节码对象,反射找到@SpringBootApplication注解的类(启动类)。
这个类在启动时会自动:

  • 1)扫描本类所在包以及子包中的类,并查找由spring容器管理的对象(@Controller,@Service,…)
  • 2)进行资源的默认初始化配置(自动配置),具备配置会参考spring.factories(此文件所在的jar包
  • 为spring-boot-autoconfigure-2.2.2.RELEASE.jar)。

@Component是Spring中用于描述Bean类的一个注解。通过这个注解(Spring获得去自动读取的权力,读取方法为注解底层原理)我们通过IO输入流,可以以递归的形式扫,描包内的目录读取磁盘中的字节码对象。
2.读取本类包及其子类包下的字节码对象(.class文件),通过反射,读取字节码对象信息,如果字节码对象被注解注释,那么,把这个字节码对象交给BeanFactory。

3.BeanFactory是一个接口(interface),通过BeanFactory的实现类DefaultListableBeanFactory,基于反射,创建Bean对象,传给Bean容器ApplicationContext。(当Bean对象处于即使创建,即时销毁的状态时,不传递到ApplicationContext容器)

4.ApplicationContext是一个接口(interface),通ApplicationContext的实现类AnnotationConfigApplicationContext,我们可以按场景分配Bean对象,到相应的Map集合中去,等待调用。
ApplicationContext接口继承(extends)自BeanFactory,当然也能完成相应的工作,但时ApplicationContext接口的主要作用是,为Bean对象指定作用域。

在这里插入图片描述
Bean对象的属性:
1,Scope(作用域):
A: Singletion(单件模式)这个作用域标识的对象具有全局唯一性。
B:prototype(多力模式)这个作用域标识是指在获取对象的时候都会创建新的对象。
2.LifeCycle(生命周期):Bean对象的生命周期是指在spring框架中对Bean对象的创建,初始化,服务(指对Bean对象的使用),及销毁Bea元素的配置中.
3.Lazy(延迟加载):
true表示创建即加载(默认为true)
false表示调用再加载。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值