首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SpringBoot SpringApplicationBuilder

SpringBoot SpringApplicationBuilder
EN

Stack Overflow用户
提问于 2015-03-09 06:30:37
回答 2查看 8.8K关注 0票数 2

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

代码语言:javascript
复制
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()的属性(名称、值)对的值。我试过以下方法来设置:

  1. 使用上面所示的名称值对
  2. 使用(名称、值)对的HashMap列出项
  3. 创建一个ConfigurableEnvironment,检索MutablePropertySources并在其中设置我的属性。

这些选项都不起作用,所以当应用程序启动时,当代码试图访问某些系统属性值时,就会中断。

有什么办法解决这个问题吗..。所有的帮助都非常感谢!我需要这些属性是Spring属性,以确保应用程序正确工作。也许我可以用其他方式使用Spring道具来测试我的代码?如果是的话,我该如何做?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-03-10 05:13:13

您可以如下所示配置这些属性:

代码语言:javascript
复制
application = new SpringApplicationBuilder()
    .parent(new Object[]{"classpath:file1.xml", "classpath:file2.xml"})
    .profiles("abc")
    .properties("key1:test1", "key2:test2") 
    .showBanner(false)
    .logStartupInfo(true)
    .headless(true)
    .application()
    .run();

现在,使用@Value注释检索属性:

代码语言:javascript
复制
@Value("${key1}")
String val;

val变量将被赋值为test1

票数 1
EN

Stack Overflow用户

发布于 2016-09-21 16:41:16

我自己也处理过同样的问题。我的问题是,我试图设置的值的键也在application.properties文件中设置。

从文件中删除条目之后,它就正常工作了。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28936320

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档