我在用@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()
方法,并且@Autowired
中的String
MyParsingComponent
始终为../production/environment/path
,而不是预期的/test/environment/path
。
不知道为什么会这样。任何想法将不胜感激。
我有一个用@Configuration装饰的类中定义的Bean:@Configuration公共类MyBeanConfig {@Bean public String configPath(){return“ ../production/environment/path”; ...
如Spring Boot参考手册的Detecting Test Configuration部分所记录,在顶级类中配置有@TestConfiguration
注释的所有Bean将not
请确保@Bean工厂方法的方法名称与任何现有的Bean名称都不匹配。我在方法名称上遇到问题,例如config()