2013-10-08 42 views
3

我需要閱讀我的Spring MVC應用程序中的java屬性文件,但我找不到這樣做的方式。我在這裏嘗試了幾個類似問題的答案,但是我沒有成功。我是Java新手,特別是Spring MVC,所以我可能搞砸了一些東西。如何閱讀Java Spring MVC應用程序中的屬性(或任何其他文本)文件?

我不知道該文件是否成功部署。我使用Tomcat btw。

+1

請告訴你如何嘗試讀取它。 –

+0

這將是很好的知道你的春天mvc版本,你使用XML配置或Java,你的戰爭看起來像(如果你有)和其他細節。 – Admit

+0

'Properties.load(Reader)'想到:http://docs.oracle.com/javase/6/docs/api/java/util/Properties.html#load%28java.io.Reader%29 –

回答

1

通過使用PropertySourcesPlaceholderConfigurer,可以在Spring中自動加載屬性文件。

這裏是使用Spring JavaConfig配置PropertySourcesPlaceholderConfigurer的示例:

@Bean 
public static PropertySourcesPlaceholderConfigurer properties() { 
    PropertySourcesPlaceholderConfigurer props = new PropertySourcesPlaceholderConfigurer(); 
    props.setLocations(new Resource[] { 
      new ClassPathResource("/config/myconfig.properties"), 
      new ClassPathResource("version.properties") 
    }); 
} 

這將加載上述類路徑上的從所述文件的屬性。

您可以在應用程序內的屬性替換中使用這些屬性。例如,假設在上述名爲myprop的文件中有一個屬性。你可以使用以下注入myprop的值到字段:

@Value(${myprop}) 
private String someProperty; 

您也可以通過注入Spring的Environment對象插入類訪問屬性的值。

@Resource 
private Environment environment; 

public void doSomething() { 
    String myPropValue = environment.getProperty("myprop"); 
} 

爲了在Web應用程序中讀取任何舊文件弗雷德裏克張貼在上述評論的鏈接提供了正常的classloader障礙試圖從內讀取文件時,一個遇到的一個很好的解釋了戰爭檔案及其周圍的解決方案。

8

如果您在使用Spring 3.1+可以使用@PropertySource註釋:

@Configuration 
@PropertySource("classpath:/com/example/app.properties") 
public class AppConfig { 
    // create beans 
} 

或基於XML的配置,你可以使用<context:property-placeholder>

<beans> 
    <context:property-placeholder location="classpath:com/example/app.properties"/> 
    <!-- bean declarations --> 
</beans> 

那麼你就可以自動裝配的關鍵在使用@Value註釋的屬性文件中:

@Value("${property.key}") String propertyValue; 

Spring reference docs中閱讀更多詳情。

+0

我試過這樣做。但是我將這個值設爲null。它沒有讀取財產的價值。 – user

+0

請確保包含「@ Value」註釋的類用「@ Component」(或任何其他組件構造型註釋)註解。 – matsev

0

您可以嘗試下面的代碼。

添加這的servelt-context.xml中

<context:property-placeholder location="classpath:config.properties"/> 

並訪問在java中的配置文件的內容,

@Value("${KEY}") 
private String value; 
相關問題