Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/351.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/spring-boot/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在SpringApplicationBuilder()上设置运行时属性_Java_Spring Boot - Fatal编程技术网

Java 在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")

我需要通过创建Cucumber集成测试来测试我的Spring应用程序代码。我使用SpringApplicationBuilder在触发实际逻辑之前启动我的应用程序,并使用以下语法执行此操作:-

    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的应用程序属性?