Java 在春天创建模拟bean
首先,我找到了解决问题的方法,但我不明白为什么它能起作用 我已经用bean实现了Spring配置: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”)没有这一
@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实例吗?