1

当我尝试加载源代码中的属性文件时,我遇到了问题。但是当我尝试从外部加载属性文件时,它工作正常。下面提到了工作和不工作的代码。有人可以帮我解决这个问题。我是春天的新手:)

我为从外部和项目内部加载属性文件所做的唯一更改是 context:property-placeholder 中的位置声明。

配置弹簧上下文以从外部加载属性文件,如下所示。它工作得很好。

从外部加载属性文件时 -工作

<context:property-placeholder location="file:///C:/Test/Data/WebDetails.properties"
    ignore-resource-not-found="true" ignore-unresolvable="true" order="1" />

我将我的属性文件配置为在 spring 上下文中从项目加载,如下所示 -不工作

<bean id="webProperties" class="com.test.run.WebProperties" />

<context:property-placeholder location="file:./src/main/resources/WebDetails.properties"
    ignore-resource-not-found="true" ignore-unresolvable="true" order="1" />

我的 WebDetails.properties 位于 src/main/resources 下的 Maven 项目中。文件看起来像

url = www.testresponse.com
space = SampleSpace

并在 WebProperties 中映射属性值,如下所示

@Component
public class WebProperties{
   @Value("{url}") public String url;
   @Value("{space}") public String space;

   //getters
}

我的主要课程是:

public class ProcessWeb {
    ApplicationContext context;
    WebProperties webProperties;

}

public ProcessWeb () {
     context = new ClassPathXmlApplicationContext("web-context.xml");
     webProperties= (WebProperties) context.getBean("webProperties");
    }

public void execute(String[] args){
    webProperties.getURL()
}

public static void main(String args[])
{
    ProcessWeb main = new ProcessWeb ();
    main.execute();
}

当我从代码加载属性时执行我的主类。我收到${url} 错误(系统找不到指定的文件。)

我应该如何在占位符中配置我的位置路径?

更多信息:主类 ProcessWeb 将从批处理文件中调用。部署代码后,当我们从命令提示符执行该批处理文件时,外部属性也会出现相同的问题。是否需要更改任何配置?我们将代码打包成 jar 文件

4

1 回答 1

2

像这样使用classpath

location="classpath:WebDetails.properties"
于 2017-04-25T19:30:36.233 回答