Java 在SpringApplicationBuilder()上设置运行时属性
我需要通过创建Cucumber集成测试来测试我的Spring应用程序代码。我使用SpringApplicationBuilder在触发实际逻辑之前启动我的应用程序,并使用以下语法执行此操作:-Java 在SpringApplicationBuilder()上设置运行时属性,java,spring-boot,Java,Spring Boot,我需要通过创建Cucumber集成测试来测试我的Spring应用程序代码。我使用SpringApplicationBuilder在触发实际逻辑之前启动我的应用程序,并使用以下语法执行此操作:- application = new SpringApplicationBuilder() .parent(new Object[]{"classpath:file1.xml", "classpath:file2.xml"}) .profiles("abc")
application = new SpringApplicationBuilder()
.parent(new Object[]{"classpath:file1.xml", "classpath:file2.xml"})
.profiles("abc")
.properties("name:value") [It has 5/6 (name:value) pairs here]*
.showBanner(false)
.logStartupInfo(true)
.headless(true)
.application()
.run();
我的Spring应用程序启动正确。但是,它不会获取传递给SpringApplicationBuilder()的属性(名称、值)对的值。我尝试了以下方法来设置它们:-
- 如上所述使用名称-值对
- 使用(名称、值)对的哈希映射
- 创建可配置环境,检索可变属性资源并在其中设置我的属性
有没有办法解决这个问题。。非常感谢所有的帮助 您在
SpringApplicationBuilder
上配置的属性在应用程序的环境中可用,而不是作为系统属性。如果您的代码需要系统属性,那么您应该在启动JVM时使用system.setProperty(key,value)
或作为-D
参数来设置它们
例如:
@TestPropertySource(properties={"name1=value1","name2=value2"})
或者修改测试以使用Spring环境。非常感谢您的回复。我明白你的意思。但是,当我的应用程序使用SpringApplicationBuilder启动时,它需要特定于Spring的属性。我试图为Cucumber集成测试模拟整个Spring应用程序,就好像它在测试环境之外运行时会启动一样。因此,我可能无法在测试中使用系统属性。。有没有办法将它们设置为特定于Spring的应用程序属性?