2014-11-25 68 views
0

在我的春节,启动Web服务应用程序,我想加载一个名为APPNAME在application.properties定义的值属性。春季启动WS应用程序无法加载外部属性

@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}”

难道你们知道我做错了吗?

感谢任何帮助。

+2

很难说。如果我不得不猜测,我可能会说你的属性文件不在类路径中(IDE可能会更新),或者你并不是真的用该主要方法启动你的应用程序。 – 2014-11-25 08:04:41

+0

嗨戴夫,这是一个非常有效的点,你让我觉得在正确的方向。尽管Eclipse IDE已将src/main/resources添加到类路径,但排除了* .properties并导致此问题。现在它都是固定的。非常感谢您的意见。 – user2926391 2014-11-25 10:32:07

回答

1

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

相关问题