簡體   English   中英

將依賴項注入非Spring管理的庫類中

[英]Injecting a dependency into a library class not managed by spring

我對spring或依賴注入很陌生。 我已經在一個jar文件中建立了一個抽象類A,該文件不是由Spring管理的(這是基於它沒有自動關聯其依賴項,在庫中沒有使用spring注釋的事實。)

我有一個需要使用此類的項目,並且想注入我對類A的依賴項(例如,類型B)的實現。 該項目使用springboot。

如何將B類型的依賴項注入A? 我嘗試了以下操作:1.創建一個配置(@Configuration)類,並添加一個標注為@Bean的方法getB(),它將使用我的B實現返回類型B的對象。

@Bean
public B getB () {
   return new MyB();
}

如果要將B注入A ,則不能。 由於A不是由Spring管理的,因此IOC容器將永遠不會在他不知道的類中注入任何東西。

問題的關鍵是您要獲取和使用A實例的方式。

如果要在spring管理的代碼中使用A ,則必須為A創建一個工廠:

@Bean
public A a() {
    B b = new MyB();
    A a = new A(b); // new A is not possible since A is abstract but you got the idea
    return a;
}

// ...

class MyService {
   @Autowired
   A a;

   void something() {
      (a.b instanceof MyB) // true
   }

}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM