[英]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文件中很好地定義了引用的Foo
和Bar
。
問題是,我不想在任何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.