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類),批量獲取插件然后注入
	}
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM