最佳答案
我在一个用 @Configuration
修饰的类中定义了一个 Bean
:
@Configuration
public class MyBeanConfig {
@Bean
public String configPath() {
return "../production/environment/path";
}
}
我有一个用 @TestConfiguration
修饰的类,它应该覆盖这个 Bean
:
@TestConfiguration
public class MyTestConfiguration {
@Bean
@Primary
public String configPath() {
return "/test/environment/path";
}
}
configPath
bean 用于设置外部文件的路径,该文件包含启动过程中必须读取的注册代码。它在 @Component
类中使用:
@Component
public class MyParsingComponent {
private String CONFIG_PATH;
@Autowired
public void setCONFIG_PATH(String configPath) {
this.CONFIG_PATH = configPath;
}
}
在尝试调试这个函数时,我在每个方法以及测试配置类的构造函数中设置了一个断点。@TestConfiguration
的构造函数断点被命中,所以我知道我的测试配置类实例化,但是该类的 configPath
方法从未被命中。相反,正常 @Configuration
类的 configPath
方法被命中,MyParsingComponent
中的 @Autowired
String
始终是 ../production/environment/path
而不是预期的 /test/environment/path
。
不知道为什么会发生这样的事,如果你有任何想法,我将不胜感激。