使用范围代理覆盖单例

时间:2013-07-16 22:53:55

标签: java spring testing inheritance scope

在Spring中,是否可以使用作用域代理覆盖单例bean定义? 也就是说,如果我有一些

@Configuration
public class MyConfiguration
{
    @Bean
    public Foo foo()
    {
        return new Foo();
    }
}

我想创建一个测试配置但是具有“Foo”的自定义范围:

@Configuration
public class MyTestConfiguration extends MyConfiguration
{
    @Override
    @Scope(value="myTestScope", proxyMode=ScopedProxy.TARGET_CLASS)
    public Foo foo()
    {
        return new Foo();
    }
}

然而,这种方法不起作用!构造的Foo 仍然是单身人士!不幸的是,添加@Primary并将@Bean注释添加到测试配置中也无济于事。有没有办法用范围代理覆盖单例?

1 个答案:

答案 0 :(得分:0)

有效范围值为:

  
      
  1. singleton - 每个Spring IoC容器返回一个bean实例
  2.   
  3. prototype - 每次请求时返回一个新的bean实例
  4.   
  5. request - 每个HTTP请求返回一个bean实例。会议 -
  6.   
  7. 每个HTTP会话返回一个bean实例。 globalSession -
  8.   
  9. 每个全局HTTP会话返回一个bean实例。
  10.