BeanDefinition学习

Spring版本5.1.x

Spring中的BeanDefinition是一个接口,用于描述Spring容器中Bean的元数据。BeanDefinition描述了Bean的各种属性,如名称、依赖关系、初始化方法等。这个接口通常用于在Spring的IoC容器中注册Bean,并且当容器需要创建Bean实例时,会使用这些BeanDefinition来获取Bean的属性和依赖关系。

BeanDefinition的主要作用是:

  1. 描述Bean的属性和依赖关系:BeanDefinition可以定义一个Bean的属性和依赖关系,Spring容器会根据这些信息来创建Bean实例,并且注入相应的依赖。
  2. 注册Bean到Spring容器中:在Spring应用中,我们通常会将Bean的定义注册到Spring容器中,这样容器就可以管理这些Bean的生命周期。BeanDefinition就是用于描述Bean的元数据,从而将Bean注册到Spring容器中。
  3. 实现依赖注入:通过使用BeanDefinition,Spring容器可以自动识别和注入Bean之间的依赖关系。当容器需要创建一个Bean实例时,它会根据BeanDefinition中的信息来获取依赖关系,并且自动注入相应的Bean实例。
public interface BeanDefinition extends AttributeAccessor, BeanMetadataElement {/*** @see #setScope bean 作用域 单例*/String SCOPE_SINGLETON = ConfigurableBeanFactory.SCOPE_SINGLETON;/*** @see #setScope bean 作用域 原型*/String SCOPE_PROTOTYPE = ConfigurableBeanFactory.SCOPE_PROTOTYPE;int ROLE_APPLICATION = 0;int ROLE_SUPPORT = 1;int ROLE_INFRASTRUCTURE = 2;void setParentName(@Nullable String parentName);@NullableString getParentName();void setBeanClassName(@Nullable String beanClassName);@NullableString getBeanClassName();/*** 设置bean作用域*/void setScope(@Nullable String scope);@NullableString getScope();/*** @see @Lazy* lazy-init* 是否延迟初始化bean  默认为false 如果设置为true 则直到第一次使用该bean时才会初始化bean* 一般不需要更改改属性值,因为如果延迟初始化bean 可能会出现一个循环依赖,初始化顺序等问题*/void setLazyInit(boolean lazyInit);boolean isLazyInit();/*** 当前bean的依赖*/void setDependsOn(@Nullable String... dependsOn);@NullableString[] getDependsOn();/*** 是否将当前bean定义为一个作为自动装配的候选者,可以自动注入到其他需要依赖该bean地方,默认值为true* 如果为false 也可以显示的获取和注入 比如application.getBean();*/void setAutowireCandidate(boolean autowireCandidate);boolean isAutowireCandidate();/*** 多个类型相同的bean 设置当前为主要的第一选择*/void setPrimary(boolean primary);boolean isPrimary();/*** 设置生成该bean的工厂name*/void setFactoryBeanName(@Nullable String factoryBeanName);@NullableString getFactoryBeanName();/*** 设置生成该bean的工厂方法*/void setFactoryMethodName(@Nullable String factoryMethodName);@NullableString getFactoryMethodName();/*** 获取构造方法参数*/ConstructorArgumentValues getConstructorArgumentValues();default boolean hasConstructorArgumentValues() {return !getConstructorArgumentValues().isEmpty();}/*** 获取bean的属性值*/MutablePropertyValues getPropertyValues();default boolean hasPropertyValues() {return !getPropertyValues().isEmpty();}/*** init-method* 设置bean的初始化方法*/void setInitMethodName(@Nullable String initMethodName);@NullableString getInitMethodName();/*** destroy-method* 设置bean的销毁方法*/void setDestroyMethodName(@Nullable String destroyMethodName);@NullableString getDestroyMethodName();void setRole(int role);int getRole();/***bean的描述信息*/void setDescription(@Nullable String description);@NullableString getDescription();/*** 判断bean是否为单例的*/boolean isSingleton();/*** 判断bean 是否为原型的*/boolean isPrototype();/*** 判断bean 是否为抽象的*/boolean isAbstract();@NullableString getResourceDescription();/*** 获取原始bean*/@NullableBeanDefinition getOriginatingBeanDefinition();}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/663656.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

代码随想录算法训练营第38天 | 动态规划理论基础 509.斐波那契数 70.爬楼梯 746.使用最小花费爬楼梯

动态规划理论基础 动态规划适用于解决有重叠子问题的问题。所以动态规划中的每一个状态一定是由上一个状态推导来的,这一点区分于贪心,因为贪心每一步总是取局部最优。 解题步骤: 确定dp数组的含义确定递推表达式dp数组如何初始化确定遍历顺…

MySql修改字段类型和大小

MySql 修改表字段的类型和大小 原因: 1,在我们设计表的时候,有时设计表字段女的大小和类型的时候,有时可能不合适,需要修改字段的大小 2,修改表字段的常见2种,第一种修改大小,第二…

图像处理之《可逆重缩放网络及其扩展》论文精读

一、文章摘要 图像重缩放是一种常用的双向操作,它首先将高分辨率图像缩小以适应各种显示器或存储和带宽友好,然后将相应的低分辨率图像放大以恢复原始分辨率或放大图像中的细节。然而,非单射下采样映射丢弃了高频内容,导致逆恢复…

LVGL部件6

一.圆弧部件 1.知识概览 2.函数接口 1.lv_obj_clear_flag 在 LVGL(LittlevGL)中,lv_obj_clear_flag 函数用于清除对象的特定标志位。该函数的原型如下: void lv_obj_clear_flag(lv_obj_t * obj, lv_obj_flag_t flag);obj 是指…

[力扣 Hot100]Day20 旋转图像

题目描述 给定一个 n n 的二维矩阵 matrix 表示一个图像。请你将图像顺时针旋转 90 度。 你必须在原地旋转图像,这意味着你需要直接修改输入的二维矩阵。请不要 使用另一个矩阵来旋转图像。 出处 思路 旋转时每四个位置为一组进行swap操作,找好对…

计算视图里的projection和aggregation节点区别

Projection 和 Aggregation到底有什么区别? 看名字就能看出来的。 那么在什么场景下用呢? 1. Projection就是投影,也就是说你本来的源里有什么,就直接给你拿出来。 除了这个,它使用的场景就是: 只映射需…

python 读图片 读文件封装

python 读图片封装 支持 视频,图片文件夹,图片 2024.02.01更新 安装依赖项:pip install natsort #-*-coding:utf-8-*- import os.path from natsort import natsorted import cv2class ImgReader:def __init__(self, source, suffixmp4):s…

帮管客CRM 文件上传漏洞

免责声明:文章来源互联网收集整理,请勿利用文章内的相关技术从事非法测试,由于传播、利用此文所提供的信息或者工具而造成的任何直接或者间接的后果及损失,均由使用者本人负责,所产生的一切不良后果与文章作者无关。该…

TCP/IP详细介绍以及TCP/IP寻址

目录 ​编辑 1. TCP/IP 介绍 2. 计算机通信协议(Computer Communication Protocol) 3. 什么是 TCP/IP? 4. 在 TCP/IP 内部 5. TCP 使用固定的连接 6. IP 是无连接的 7. IP 路由器 8. TCP/IP 9. TCP/IP 寻址 10. IP地址 …

谷歌产品大更新:Bard可生成图像;文生音乐平台等5大免费功能

2月2日,谷歌在官网对生成式AI产品进行了大更新,包括类ChatGPT聊天助手Bard可以通过文本提示生成图像; 全新的文生音乐平台MusicFX;新的文生图像平台ImageFX;新的文本扩写平台TextFX;在谷歌地图中增加生成式…

MATLAB矩阵的操作(第二部分)

师从清风 矩阵的创建方法 在MATLAB中,矩阵的创建方法主要有三种,分别是:直接输入法、函数创建法和导入本地文件中的数据。 直接输入法 输入矩阵时要以中括号“[ ]”作为标识符号,矩阵的所有元素必须都在中括号内。 矩阵的同行元…

P1967 [NOIP2013 提高组] 货车运输

[NOIP2013 提高组] 货车运输 题目背景 NOIP2013 提高组 D1T3 题目描述 A 国有 n n n 座城市,编号从 1 1 1 到 n n n,城市之间有 m m m 条双向道路。每一条道路对车辆都有重量限制,简称限重。 现在有 q q q 辆货车在运输货物&#x…

UnitySahder实现Phong/BlinnPhong模型

目录 Phong模型公式: BlinnPhong模型公式: 实现: Phong模型: BlinnPhong模型: Phong模型公式: 结果自发光+环境光漫反射高光反射 BlinnPhong模型公式: 对Phong模型的简单修改&…

M1芯片MAC 安装MySQL、Nacos遇到的问题

摘要:由于电脑上是M1芯片,安装软件时遇到一系列问题,记录下踩的坑!!! 安装MySQL MySQl官网下载链接区分ARM和X86架构,终端输入uname -a指令,本机显示为ARM czhczhdeiMac ~ % uname…

Git―基本操作

Git ⛅认识 Git⛅安装 GitCentos(7.6)Ubuntu ⛅Git―基本操作创建本地仓库🍂配置本地仓库🍂工作区, 暂存区, 版本库🍂版本库工作区 添加文件🍂查看文件🍂修改文件🍂版本回退🍂☃️案例 撤销修改…

【华为OD机试】 最富裕的小家庭【2024 C卷|100分】

【华为OD机试】-真题 !!点这里!! 【华为OD机试】真题考点分类 !!点这里 !! 题目描述 在一颗树中,每个节点代表一个家庭成员,节点的数字表示其个人的财富值, 一个节点及其直接相连的子节点被定义为一个小家庭。 现给你一颗树,请计算出最富裕的小家庭的财富和。 输入描述 …

k8s中cert-manager管理https证书

前言 目前https是刚需,但证书又很贵,虽然阿里云有免费的,但没有泛域名证书,每有一个子域名就要申请一个证书,有效期1年,1年一到全都的更换,太麻烦了。经过搜索,发现了自动更新证书神器cert-manager;当然cert-manager是基于k8s的。 安装采用Helm方式 Chart地址: ht…

THREE.JS动态场景开发实战【赛博朋克】

在本教程中,我们将探索如何创建类似 Three.js 的赛博朋克场景,灵感来自 Pipe 网站上的背景动画。 我们将指导你完成使用 Three.js 编码动态场景的过程,包括后处理效果和动态光照,所有这些都不需要任何着色器专业知识。 我用这个场…

python tqdm进度条详解

文章目录 1. 语法1.1 tqdm 参数1.2 bar_format案例 2. 基本用法2.1 指定可迭代对象2.2 指定迭代次数2.3 设置显示信息2.3.1 设置进度条前缀(左侧)信息2.3.2 显示进度条后缀(右侧)信息 3. 项目案例参考 tqdm 是 Python 进度条库,可以在 Python 长循环中添加一个进度提…

学术写作|第二篇论文写作记录|GPT4论文润色Prompt

本文目录 写作时间安排如何写出初稿?找谁修改?1. 找AI修改2. 找师姐、师兄、老师、同行/外行修改论文修改意见集锦(反复观看)最好用的GPT4指令禁止转载,未经允许的任何引用。 写作时间安排 第二篇工作的idea去年就想出来了,一直被其他事情干扰,错过了N个会议… 在寒假…