在spring boot中使用同一个bean访问不同的Implementation / Component

时间:2017-05-25 05:55:34

标签: java spring components implementation profile

@Configuration
@Profile("live")
public class LiveProfileConfig{

    @Bean
    public BaseInterface commonInterface(){
        return new LiveComponent();
    }

}

@Configuration
@Profile("test")
public class TestProfileConfig{

    @Bean
    public BaseInterface commonInterface(){
        return new TestComponent();
    }
}

现在,在Main Spring启动应用程序中,我设置了" live"个人资料如下

@ContextConfiguration(classes = {LiveProfileConfig.class, TestProfileConfig.class},loader=AnnotationConfigContextLoader.class)
@ActiveProfiles(value="live")

然后调用其中一个implmentation以根据活动配置文件使用组件

@Service
public class AnotherImpl implements AnotherInterface {

    @Autowired
    BaseInterface commonInterface;  
}

现在,我想基于活动配置文件访问一个组件方法(即LiveComponent / TestComponent)。

它适用于JUnit测试,但是当我尝试使用Spring Boot Application运行它时,它会给我以下错误。

  

需要一个bean,但是找到了2个,考虑标记其中一个   bean作为@Primary,更新消费者以接受多个bean,或者   使用@Qualifier来识别应该使用的bean

任何帮助?

0 个答案:

没有答案