簡體   English   中英

關於Spring IoC的一個簡單問題

[英]A simple question about Spring IoC

假設有1000個類(X1 ... X1000),它們都在庫abc.jar定義。

X *類使用了一些JSR-330注釋,例如:

class X12 {

    @Inject
    Foo foo;

    @Inject
    Bar bar;

}

我的主要類是測試用例@RunWith(SpringJUnit4ClassRunner.class) ,並且在bean XML文件中很好地定義了引用的FooBar

問題是,我不想在任何XML文件中定義X1 ... X1000。 但我想自動接線,例如:

X173 x173 = new X173();

但是問題是,使用Java新實例時,未連接foo / bar。

這也行不通:

X173 x173 = applicationContext.getBean(X173.class);

因為沒有為X173定義bean。

而且,X173也可能包含X258類的成員,該成員也應進行接線。 在解決此問題之前,我不知道如何實現它。

您可以使用自動檢測將它們聲明為Spring Bean。

最明顯的方法是使用Spring注釋(例如@Component注釋這些類,然后將<context:component-scan />到XML。

如果沒有注釋,則<context:component-scan />支持可配置的過濾器。 例如,如果這些類實際上被命名為X1...X1000 ,則可以使用regexp過濾器:

<context:component-scan base-package="com.example">
     <context:include-filter type="regex" expression="com\.example\.X\d{1,4}"/>
</context:component-scan>

好。 有不同類型的測試。 讓我們也看看它們。

  • 在模塊化測試中,您應該測試單個類並模擬其依賴關系。 因此,您應避免使用任何噴油器。

  • 在集成中,您應該測試某個類的交互,因此可以像通常的應用程序一樣使用注入器。

暫無
暫無

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

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