spring更加松散的获取bean的方式ObjectProvider

概述

ObjectProvider直译就是对象提供者;

平时从spring中获取bean都是调用beanFactory.getBean()方法,如果bean不存在则会直接抛异常;

spring 4.3开始引入了org.springframework.beans.factory.ObjectProvider接口,其提供了若干的方法,可以更松散的获取bean.

BeanFactory中也有定义返回值是ObjectProvider的相关方法;

ObjectProvider方法解释

直接引用一波网上现成的翻译

public interface ObjectProvider<T> extends ObjectFactory<T>, Iterable<T> {// 返回指定类型的bean, 如果容器中不存在, 抛出NoSuchBeanDefinitionException异常// 如果容器中有多个此类型的bean, 抛出NoUniqueBeanDefinitionException异常T getObject(Object... args) throws BeansException;// 如果指定类型的bean注册到容器中, 返回 bean 实例, 否则返回 null@NullableT getIfAvailable() throws BeansException;// 如果返回对象不存在,则进行回调,回调对象由Supplier传入default T getIfAvailable(Supplier<T> defaultSupplier) throws BeansException {T dependency = getIfAvailable();return (dependency != null ? dependency : defaultSupplier.get());}// 消费对象的一个实例(可能是共享的或独立的),如果存在通过Consumer回调消耗目标对象。default void ifAvailable(Consumer<T> dependencyConsumer) throws BeansException {T dependency = getIfAvailable();if (dependency != null) {dependencyConsumer.accept(dependency);}}// 如果不可用或不唯一(没有指定primary)则返回null。否则,返回对象。@NullableT getIfUnique() throws BeansException;// 如果存在唯一对象,则调用Supplier的回调函数default T getIfUnique(Supplier<T> defaultSupplier) throws BeansException {T dependency = getIfUnique();return (dependency != null ? dependency : defaultSupplier.get());}// 如果存在唯一对象,则消耗掉该对象default void ifUnique(Consumer<T> dependencyConsumer) throws BeansException {T dependency = getIfUnique();if (dependency != null) {dependencyConsumer.accept(dependency);}}// 返回符合条件的对象的Iterator,没有特殊顺序保证(一般为注册顺序)@Overridedefault Iterator<T> iterator() {return stream().iterator();}// 返回符合条件对象的连续的Stream,没有特殊顺序保证(一般为注册顺序)default Stream<T> stream() {throw new UnsupportedOperationException("Multi element access not supported");}// 返回符合条件对象的连续的Stream。在标注Spring应用上下文中采用@Order注解或实现Order接口的顺序default Stream<T> orderedStream() {throw new UnsupportedOperationException("Ordered element access not supported");}
}

参考文章
https://www.cnblogs.com/secbro/p/11974729.html

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

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

相关文章

Idea 插件开发: Swing Designer设计器创建的组件全部为空问题记录

问题现象 通过Swing 设计器创建的对象, Swing组件全部是空的, 导致ToolWindowFactory工厂的实现类调用时候出现了空指针异常 如下方式创建的 问题分析 问题出现时候, 同时给我生成了一个createUIComponents的私有方法, 由于个人当时理解有误, 把他当成了初始化方法, 在里面…

Oracle高可用一家老小全在这里

&#x1f4e2;&#x1f4e2;&#x1f4e2;&#x1f4e3;&#x1f4e3;&#x1f4e3; 哈喽&#xff01;大家好&#xff0c;我是【IT邦德】&#xff0c;江湖人称jeames007&#xff0c;10余年DBA及大数据工作经验 一位上进心十足的【大数据领域博主】&#xff01;&#x1f61c;&am…

用Java实现一对一聊天

目录 服务端 客户端 服务端 package 一对一用户; import java.awt.BorderLayout; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.PrintWriter; import java.net.ServerSocket; import java.net.Socket; imp…

s3-dist-cp 介绍教程示例使用方法

s3-dist-cp 是 AWS EMR 内置的用于 S3 和 HDFS 之间文件拷贝的专用工具,与 Hadoop 的 distcp 类似,也是通过 Map-Reduce 作业的方式实现分布式的文件复制(distcp 就是 distributed copy 分布式拷贝的意思)。 s3-dist-cp 并不是一个简单的在 S3 和 HDFS 之间拷贝文件的工具…

SpringBoot中MyBatis-Flex的集成和使用

一、MyBatis-Flex 是什么​ MyBatis-Flex是一个基于MyBatis的数据访问框架&#xff0c;专门为Flex应用程序而设计的。它提供了一种灵活而高效的方式来处理Flex应用程序中的数据访问&#xff0c;可以轻松地连接到各种数据源&#xff0c;并提供了一些方便的工具和功能&#xff0c…

虚拟机和主机间复制粘贴

文章目录 前言一、版本介绍二、安装工具1.确认配置2.安装工具3.重启 总结 前言 在Windows中使用虚拟机&#xff0c;可以很方便地linux&#xff0c;就像是在本地操作服务器一样。 一、版本介绍 虚拟机&#xff1a;VMware 15 操作系统&#xff1a;CentOS 7 二、安装工具 1.确…

delphi android打开外部文件,报错android.os.FileUriExposedException解决方法

Android 7.0强制启用了被称作 StrictMode的策略&#xff0c;带来的影响就是你的App对外无法暴露file://类型的URI了。 如果你使用Intent携带这样的URI去打开外部App(比如&#xff1a;打开系统相机拍照)&#xff0c;那么会抛出FileUriExposedException异常。 Delphi 为Android…

C++(14):通过tuple在构造对象时注入类型不确定的对象/插件

有的时候我们需要在构建对象时注入一系列类型不确定的对象或插件,怎么才能实现呢? #include <iostream> #include <string> #include <tuple>using namespace std;class A{ public:A(int a) : m_a(a){cout<<"construct A:"<<m_a<…

windows系统安装RocketMQ_dashboard

1.下载源码 按照官网说明下载源码 官网 官网文档 2.源码安装 2.1.① 编译rocketmq-dashboard 注释掉报错的maven插件frontend-maven-plugin、maven-antrun-plugin mvn clean package -Dmaven.test.skiptrue2.2.② 运行rocketmq-dashboard java -jar target/rocketmq-…

Qt基础-connect函数详解

本文详解Qt的connect函数用法。 目录 定义 形式 函数原型 实例说明 定义 Qt中的信号槽为核心内容,一定要熟练掌握。链接信号使用connect函数。 QObject::connect函数,顾名思义,链接函数,作用是链接信号(signal)和槽(

tamcat乱码

学习springmvc时tamcat乱码 ①、启动时tomcat控制台乱码 解决方法是&#xff1a;1、先把idea设置里的默认字节码改成utf-8 ​ 2、把idea显示编码改成utf-8&#xff0c;在末尾加上&#xff08; -Dfile.encodingUTF-8&#xff09; ​ 3、最后重启idea 加上这个 -Dfile.encodingU…

CSS基础概念之选择器类型

CSS选择器类型 选择器表示元素在树结构中的特定模式。选择器(selector)术语指的是&#xff0c;简单选择器(simple selector)&#xff0c;复合选择器(compound selector)&#xff0c;复杂选择器(complex selector)&#xff0c;或者选择器列表(selector list)。选择器的主题是任…

【软考中级——软件设计师】备战经验 笔记总结分享

考试成绩 我第一次备考是在2022 然后那时候取消了这次是第二次 靠前我一个月复习的看了以前的笔记 然后刷了七八道历年题目学习资料推荐 &#xff1a;zst——2021 b站链接自荐一下我的笔记 &#xff1a; 软考笔记专栏 视频确实很长 &#xff0c; 我的建议就是先看笔记 然后不会…

OD机考真题搜集:欢乐的周末

题目 小华和小为是很要好的朋友,他们约定周末一起吃饭。通过手机交流,他们在地图上选择了多个聚餐地点(由于自然地形原因,部分聚餐地点不可达),求小为和小华都可以到达的聚餐地点有多少个? 输入 第一行输入m,n,分别代表地图的长度和宽度 第二行开始输入具体地图信息…

1-2、Java环境搭建

语雀原文链接 文章目录 1、JDK安装2、Hello World2-1、Hello World示例2-2、类名和文件名2-3、注释2-4、javadoc 3、环境变量3-1、Path作用3-2、classpath3-3、JAVA_HOME 4、Java组成5、跨平台原理5-1、Java跨平台原理5-2、C语言的跨平台原理 1、JDK安装 下载地址&#xff1a…

打造Github首页的动态飞线效果

一、导语 Github首页的地球动态飞线&#xff0c;大家都比较熟悉吧 二、分析 由大量随机的3点构造出贝塞尔曲线&#xff0c;然后开始从起点到终点的飞行后&#xff0c;然后再从起点到终点的消失&#xff0c;就此完成整个过程 三、基础代码 createCurve(startPoint, endPoint…

unity 2d 入门 飞翔小鸟 死亡闪烁特效(十三)

一、c#脚本 using System.Collections; using System.Collections.Generic; using UnityEngine;public class Bling : MonoBehaviour {public Texture img;public float speed;public static bool changeWhite false;private float alpha0f;// Start is called before the fi…

信创运维产业的发展与趋势:IT管理的新视角

随着数字化时代的来临&#xff0c;信息技术应用的各个方面都在发生变革。在这个过程中&#xff0c;信创运维产业的发展尤为引人注目。它不仅是数字化转型的关键驱动力&#xff0c;也是国家经济发展的重要支柱。本文将探讨信创运维产业的发展与趋势&#xff0c;以及国家如何管理…

芯片量产导入知识

什么是芯片量产 从芯片功能设计到生产制造、测试等环节&#xff0c;每一个环节都至关重要。 对于保障大规模发货后芯片指标表现的一致性&#xff0c;以及产品应用生命周期内的稳定性和可靠性&#xff0c;需要考虑多种因素。以下是一些相关的观点&#xff1a; 可量产性设计&am…

Stable Diffusion 系列教程 - 2 WebUI 参数详解

Stable Diffusion 的整个算法组合为&#xff1a; UNet VAE 文本编码器 UNet&#xff1a;就是我们大模型里的核心。 文本编码器&#xff1a;将我们的prompt进行encoder为算法能理解的内容&#xff08;可以理解为SD外包出去的项目CLIP&#xff09;。 VAE&#xff1a;对UNet生…