SpringBoot之ObjectProvider类

ObjectProvider的使用

SpringBoot中很多地方都用到这个特性,尤其是在很多AutoConfiguration中,比如mybatis的AutoConfiguration

Spring注入方式

  1. setter方法
  2. 构造方法
  3. 属性注入

同一个接口多个实现的注入

对于一个接口M

public interface M {}

M有2个实现类

public M1 implements M {}
public M2 implements M {}

此时在A类如果注入M会报错,会找到2个M的实例

public class A {
	@Resource
	private M m;
}

解决方式

  1. 在某一个实现类使用@Primary注解
  2. 使用@Qualifier指定bean名称

ObjectProvider方式

public class A {
	public A(ObjectProvider<M[]> ms) {
        // 1. 此处的ms就包裹了M1和M2,ms具有一系列方法获取M的实现对象,可以灵活的选取其中的符合要求的bean来进行注入
        // 2. mybatis中对于插件的注入就是使用这种方式(MybatisAutoConfiguration类),批量获取插件然后注入
	}
}
posted @   神一样的存在  阅读(1307)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
点击右上角即可分享
微信分享提示