我有一个具有以下结构的多模块Spring Boot项目:
IntegrationTest 模块正在测试 MyAppModule 。 IntegrationTest 模块没有主包。因此没有Spring应用程序。它只有测试包。
尽管如此,我想在application.yaml中读取一些属性,但我无法做到,因为属性总是为null:
@Configuration
@PropertySource("classpath:application.yaml")
public class IntegrationTest {
@Value("${app.url}")
private String appUrl;
}
是否可以使用@Value
注释而无需使用 Spring应用程序(主要使用SpringApplication.run
等)?
答案 0 :(得分:1)
为什么不只是@ConfigurationProperties?
@Configuration
@ConfigurationProperties(prefix = "app")
public class IntegrationTest {
private String url;
}
答案 1 :(得分:0)
在弹簧配置中添加用于组件扫描的集成测试基础包。
@ComponentScan("basePackage1,basePackage2....etc")
答案 2 :(得分:0)
感谢所有回复。使用以下代码解决了这个问题,并且必须使用SpringBootApplication。
@RunWith(SpringJUnit4ClassRunner.class)
@SpringBootTest
public class IntegrationTest {
@Value("${app.url}")
private String url;
}