2014-04-23 42 views
0

在我的Spring 3.x應用程序中,我有幾個接口,其中的實現由運行時包含的一些第三方庫提供。爲了開發和單元測試,我想注入一些這些接口的模擬/虛擬實現。一個明顯的方法是定義一個實現這些接口的具體類,並將它作爲我的測試源。由於我只是爲了注入的目的想要虛擬類,所以我想知道在Spring XML配置中是否有一種方法可以通過它定義提供接口類的元素,並讓Spring從該接口創建一個代理類並注入它?在沒有具體實現的情況下爲接口創建xml配置的spring bean

我知道我可以用mockito來做到這一點,但在某些情況下,我不會/不能使用mockito,並且希望看看這是否僅適用於Spring。

<bean name="someServiceImpl" class="org.mockito.Mockito" factory-method="mock"> <constructor-arg value="foo.bar.SomeService" /> </bean>

+0

這會更容易一大堆。如果你是使用Java配置 – geoand

+0

@geoand它只是我的應用程序已經有大量的XML配置和不想要的東西混合起來。 – Jay

+0

我明白你的意思了,很遺憾,我沒有爲你使用XML的解決方案 – geoand

回答

2

下面是你會在哪裏使用Java配置,如果你使用的配置的一個例子,它是基於JDK動態代理。

public class TestInvocationHandler implements InvocationHandler { 


    @Override 
    public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { 
     return null; 
    } 
} 

@Configuration 
public class Config { 

    @Bean 
    @Profile("test") 
    @Primary 
    public SomeService someService() { 
     return (SomeService) Proxy.newProxyInstance(Config.class.getClassLoader(), new Class[] {SomeService.class}, new TestInvocationHandler()); 
    } 
} 
+0

謝謝@geoand。 – Jay

+0

@Jay沒問題!希望能幫助到你! – geoand

相關問題