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 应用程序无法加载外部属性的主要内容,如果未能解决你的问题,请参考以下文章