Spring Boot WS 应用程序无法加载外部属性

Posted

技术标签:

【中文标题】Spring Boot WS 应用程序无法加载外部属性【英文标题】:Spring Boot WS application cannot load external property 【发布时间】:2015-01-23 00:52:58 【问题描述】:

在我的 Spring-Boot Web Service 应用程序中,我想加载一个名为 appName 的属性,其值在 application.properties 中定义。

@Endpoint
public class RasEndpoint 

private static final String NAMESPACE_URI = "http://www.mycompany.com/schema/ras/ras-request/V1";

@Value("$appName")
private String appName;

@PayloadRoot(namespace = NAMESPACE_URI, localPart = "getProductRequest")
@ResponsePayload
public GetProductResponse getProduct(@RequestPayload GetProductRequest request) 

    System.out.println("appName: " + appName);
    GetProductResponse response = generateStubbedOkResponse();
    return response;

application.properties 有以下条目

appName=ras-otc

我通过如下所示的主应用程序类启动应用程序

@Configuration
@ComponentScan
@EnableAutoConfiguration
public class Application 

  public static void main(String[] args) 
    SpringApplication.run(Application.class, args);
  

但是,当我运行应用程序时,我收到以下错误

原因:java.lang.IllegalArgumentException:无法解析 字符串值“$appName”中的占位符“appName”

你们知道我做错了什么吗?

感谢任何帮助。

【问题讨论】:

很难说。如果我不得不猜测,我可能会说您的属性文件不在类路径上(可能是 IDE 刷新),或者您并没有真正使用该 main 方法启动您的应用程序。 嗨戴夫,这是一个非常有效的观点,你让我想到了正确的方向。虽然 Eclipse IDE 已将 src/main/resources 添加到类路径中,但排除了 *.properties 并且这导致了问题。现在一切都解决了。非常感谢您的意见。 【参考方案1】:

正如 Dave 在上面的评论中提到的,属性文件没有加载到类路径中。 属性文件位于 /src/main/resources 文件夹中,该文件夹已添加到源代码中,位于 Eclipse IDE 的构建路径下,但是应用了排除规则,该规则阻止了将属性文件加载到类路径中。通过删除排除,我能够正确加载属性。

【讨论】:

以上是关于Spring Boot WS 应用程序无法加载外部属性的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Wildfly 中将外部属性文件加载到 Spring Boot

无法在 Spring Boot 中加载外部属性

Spring Boot Jar 包启动时如何加载外部资源

Spring Boot Jar 包启动时如何加载外部资源

春季启动外部配置

外部加载 application.properties 时 Spring Boot Logging 级别无效