簡體   English   中英

在沒有具體實現的接口的xml配置中創建spring bean

[英]Creating spring bean in xml configuration for an interface without concrete implementation

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

我知道我可以像mockito一樣這樣做,但在某些情況下,我不能/不能使用mockito,並希望看看這是否只有Spring才有可能。

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

以下是使用Java Config並且基於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());
    }
}

暫無
暫無

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

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