SpringBoot底层源码_AbstractBeanDefinition

AnnotatedBeanDefinition是什么

公用Beandefinition的实现类的方法和属性


AbstractBeanDefinition的重要属性

scope

bean的作用范围,单例Bean,原型Bean,默认为""(为单例)

autowire

自动装配,取值来自AutowireCapableBeanFactory的autowire,分别有ByName,ByType,Constructory,No,AutoDetet,分别对应通过name装配,通过类型装配,自动装配构造函数常量,没有自动装配常量,混合自动装配(已弃用),默认为No

dependency

依赖于,有None,Object,Simple,All,四种值,分别对应,没有依赖,依赖于对象常量,部分属性依赖,所有属性依赖,默认为none

dependsOn

 bean 初始化所依赖的 bean 

LazyInit

懒加载

primary

是否主Bean,默认false

initMethodName

初始化方法名

BeanClass

Bean的类

instanceSupplier

实力供应商

factoryMethodName

工厂方法名

FactoryBeanName

工厂名


AbstractBeanDefinition重要的方法

AbstractBeanDefinition的构造方法总共有三种

无参构造

AbstractBeanDenfinnition具有无参构造,因为它较为重要的属性都具备默认值

有参构造

有构造函数和属性值的有参构造

AbstractBeanDefinition的有参构造可以只放入参数值与属性值ConstructorArgumentValues,MutablePropertyValues这两个参数生成AbstractBeandefinition,其他参数均为默认值。

BeanDefinition转为AbstractBeanDefiniton的有参构造

AbstractBeanDefinition可以把BeanDefinition类型的转化为AbstractBeanDefinition,而不用开发者自己手动去属性赋值。(最常用)

overrideFrom

通过传入的BeanDefinition可以覆盖原AbstractBeanDefinition的属性值。

applyDefaults

applyDefaults方法可以使LazyInit,AutowireMode(NO),DependencyCheck(None),InitMethodName,EnforceInitMethod(false),EnforceDestroyMethod(false),DestroyMethodName,这些属性使用默认值。

Set/GetBeanClassName

Bean对象类名的定义

Get/Set/Has/ResolveBeanClass(BeanDefinition没有的)

对Bean对象的放入和获取,ResolveBeanClass方法较为特殊,当Class为空返回为空,当Bean有name则返回BeanClass对象。

GetResolvableType

返回Bean可解析的类型

Set/GetScope

Bean的范围定于与获取

IsSingleton/IsPrototype

是否是单例Bean/原型Bean

SetAbstract/IsAbstract

是否是抽象类,抽象类只作为Bean定义的父级

对与属性的填充只讲到上面这些,其他不一一罗列,通常都是存在set/get/is/resolve/add等方法

add/has/getQualifier/Qualifiers

限定符的管理

getOriginatingBeanDefinition

返回原始 BeanDefinition,如果没有则返回null 。

getMergedBeanDefinition

如果给定 bean 的定义是子 bean 定义,则通过与父级合并返回给定顶级 bean 的RootBeanDefinition。通过BeanName去BeanDefinitions里面去寻找BeanDefinition。
如果存在返回 bean 的(可能合并的)RootBeanDefinition,不存在则抛出BeanDefinitionStoreException

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Spring Boot 是一个基于 Spring 框架的开发框架,它简化了 Spring 应用程序的搭建和部署过程。Spring Boot底层源码主要包括 Spring Framework 和一些相关的第三方库。 Spring Framework 是 Spring Boot 的核心,它提供了一系列的模块,包括依赖注入、AOP、事务管理、Web 开发等功能。Spring Framework 的源码主要包括核心容器、Web 模块、数据访问模块等。 在探究 Spring Boot 底层源码时,可以从以下几个方面入手: 1. Spring Boot Starter:Spring Boot Starter 是 Spring Boot 的核心特性之一,它是一组预定义的依赖库集合,用于简化应用程序的配置和启动。可以通过查看 Starter 模块的源码了解 Spring Boot 启动过程中的自动配置和自动装配原理。 2. SpringApplication:SpringApplication 是 Spring Boot 启动类的入口,它负责初始化 Spring 应用上下文,并根据配置自动装配所需的组件。可以通过查看 SpringApplication 的源码了解 Spring Boot 启动过程中的各种配置加载、环境变量解析等细节。 3. 自动配置:Spring Boot 提供了自动配置的功能,根据项目所引入的依赖自动配置相应的组件。可以通过查看自动配置类的源码了解 Spring Boot 自动配置的原理和实现方式。 4. 配置属性绑定:Spring Boot 使用 @ConfigurationProperties 注解来绑定配置属性,可以通过查看该注解的源码了解属性绑定的原理。 5. Web 开发Spring Boot 对 Web 开发提供了很好的支持,可以通过查看 Spring Boot Web 模块的源码了解如何使用 Spring Boot 开发 Web 应用,并了解其中的原理和实现方式。 以上是一些可以探究 Spring Boot 底层源码的方面,通过深入研究这些源码,可以更好地理解 Spring Boot 的工作原理,从而更好地使用和调优 Spring Boot 应用程序。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值