问题描述
我的上下文严重依赖于 DatabaseSettings
bean。但是,对于测试,我通常想用 TestDatabaseSettings
bean 替换那个 bean。
目前我通过为测试设置额外的上下文配置来实现这一点,这几乎是我的正常上下文配置(所有 bean 都自动生成,因为它们都用 @Component
注释),只是它覆盖了DatabaseSettings
bean 和 TestDatabaseSettings
像这样:
@Configuration
@ComponentScan(basePackages = "io.company.project.module")
public class TestContextConfig {
@Bean
@Primary
public DatabaseSettings knightSettings() {
return new TestDatabaseSettings();
}
}
供参考:这就是 TestDatabaseSettings
的样子(它所做的只是覆盖实际 DatabaseSettings
中的逻辑,该逻辑将从具有硬编码测试值的设置文件中加载数据库名称):
public class TestDatabaseSettings extends DatabaseSettings {
private static final String TEST_DATABASE_NAME = "test_database";
@Override
protected String readDatabaseNameFromProperties() {
return TEST_DATABASE_NAME;
}
}
所以,我想知道是否有办法使用注释来实现这一点。基本上,我只想告诉系统:“使用您的正常上下文,但是将 DatabaseSettings
bean 替换为所有出现的 TestDatabaseSettings
。在我的幻想中,该注释可能看起来像这样:
@ContextReplaceBean(TestDatabaseSettings.class)
DatabaseSettings databaseSettings;
有这样的注释吗?或者我当前的解决方案在每次执行此操作时使用不同的上下文配置是否已经是最好的方法?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)