【问题标题】:Load Values from configuration File using spring使用spring从配置文件中加载值
【发布时间】:2019-05-10 21:54:08
【问题描述】:

我正在寻找一种干净的方法来使用从命令行(maven 项目)传递的环境值从属性文件中加载值。然后我计划在 Java 黄瓜测试中使用加载的值。

用法:mvn test -Denvironment=staging(然后从暂存文件加载值,即 application-staging.properties 等)。

我知道 spring boot 提供配置文件,想知道我是否可以使用通用 spring 框架(注释)的干净方法来做到这一点。

【问题讨论】:

  • 这不是和Spring Boot有关吗?
  • 糟糕,抱歉,是的——我很抱歉。
  • 对于 straigt Spring,请查看 PropertySource 注释 - docs.spring.io/spring-framework/docs/current/javadoc-api/org/…
  • 我有以下代码并使用 mvn test -Denvironment=dev 运行(我有一个名为 dev.properties 的文件),但是在尝试打印 url 时我得到了空值。 \@Configuration \@PropertySource("classpath:${environment}.properties") public class AppTest { \@Value("${base.url}") private String url; \@Bean public Config getConfig(){ Config config = new Config(); config.setUrl(url);返回配置; } @Test public void test1() { System.out.println("URL 是:"+ getConfig().getUrl()); } }

标签: java spring


【解决方案1】:

感谢@racraman。我可以使用您在PropertySource 周围的建议来解决这个问题。为了让不同的环境工作,我使用了类似的东西:

@PropertySource({"classpath:${env}.properties"}).

干杯!!!

【讨论】:

  • 太棒了 - 很高兴你成功了!顺便说一句,@PropertySource 不解析 @Value 注释。相反,您必须使用文档中的示例用法中所示的 @Autowired 环境。下面是关于使用@Value 的部分,但我从未这样做过。
  • 谢谢@racraman。我已经使用 \@Value 设置了一个默认值,它似乎工作正常。正如您在评论中提到的那样,我实际上使用 \@Autowired 来处理填充的值。再次感谢!!!
猜你喜欢
  • 2013-01-27
  • 2015-12-07
  • 1970-01-01
  • 2015-11-22
  • 2018-01-05
  • 1970-01-01
  • 2015-12-12
  • 1970-01-01
  • 2020-06-05
相关资源
最近更新 更多