Java 在春天创建模拟bean

Java 在春天创建模拟bean,java,spring,Java,Spring,首先,我找到了解决问题的方法,但我不明白为什么它能起作用 我已经用bean实现了Spring配置: @Configuration public class SomeContext { @Profile("default") @Bean(name = Some.BEAN_NAME) public Some some() { return new SomeImpl(); } } 上面代码中最重要的一行是:@Profile(“default”)没有这一

首先,我找到了解决问题的方法,但我不明白为什么它能起作用

我已经用bean实现了Spring配置:

@Configuration
public class SomeContext {
    @Profile("default")
    @Bean(name = Some.BEAN_NAME)
    public Some some() {
        return new SomeImpl();
    }
}
上面代码中最重要的一行是:
@Profile(“default”)
没有这一行,我的代码不工作

此配置由其他Spring配置导入

我尝试在其他地方创建测试上下文

@Configuration
public static class SomeTestContext extends SomeBaseTestContext {
    @Bean(name = Some.BEAN_NAME)
    public Some some() {
        return mock(Some.class);
    }
}
如果没有
@Profile(“default”)
调试器,甚至不会进入测试bean。它创建一个正常的生产bean


所以我的问题是:为什么要添加
@Profile(“默认”)
来解决问题?还有其他方法可以做同样的事情吗?

为什么要添加@Profile(“默认”)来解决问题添加到哪里?在测试类中还是在配置方法中?测试类是如何配置的?@NaveedS正在添加到我的配置方法中-我的第一段代码。测试类具有以下注释:
@RunWith(SpringJUnit4ClassRunner.class)@ContextConfiguration(classes={SomeTest.SomeTestContext.class})
当通过
@Bean
注释方法指定
@Profile(“默认”)
时,只有当客户机(使用配置的类)的概要文件被指定为活动时,才会调用该方法来创建bean实例。@NaveedS好的,我理解,这是合乎逻辑的。但为什么一个具有特定名称的bean已经创建,而另一个没有呢?假设注释
@Primary
适用于这种情况。您在哪里使用这些配置类?生产bean定义在哪里?它是如何定义的?您是指作为生产bean的某个impl实例吗?