How to read a properties file in a web application
The code to do this is pretty simple. But going by the number of people who keep asking this question, i thought i would post the code over here. Let's consider that you have a war file named SampleApp.war which has a properties file named myApp.properties at it's root :
SampleApp.war | |-------- myApp.properties | |-------- WEB-INF | |---- classes | |----- org |------ myApp |------- MyPropertiesReader.class
Let's assume that you want to read the property named "abc" present in the properties file:
----------------
myApp.properties:
----------------
abc=some value xyz=some other value
Let's consider that the class org.myApp.MyPropertiesReader present in your application wants to read the property. Here's the code for the same:
- packageorg.myapp;
- importjava.io.IOException;
- importjava.io.InputStream;
- importjava.util.Properties;
- /**
- *Simpleclassmeanttoreadapropertiesfile
- *
- *@authorJaikiranPai
- *
- */
- publicclassMyPropertiesReader{
- /**
- *DefaultConstructor
- *
- */
- publicMyPropertiesReader(){
- }
- /**
- *SomeMethod
- *
- *@throwsIOException
- *
- */
- publicvoiddoSomeOperation()throwsIOException{
- //GettheinputStream
- InputStreaminputStream=this.getClass().getClassLoader()
- .getResourceAsStream("myApp.properties");
- Propertiesproperties=newProperties();
- System.out.println("InputStreamis:"+inputStream);
- //loadtheinputStreamusingtheProperties
- properties.load(inputStream);
- //getthevalueoftheproperty
- StringpropValue=properties.getProperty("abc");
- System.out.println("Propertyvalueis:"+propValue);
- }
- }
package org.myapp; import java.io.IOException; import java.io.InputStream; import java.util.Properties; /** * Simple class meant to read a properties file * * @author Jaikiran Pai * */ public class MyPropertiesReader { /** * Default Constructor * */ public MyPropertiesReader() { } /** * Some Method * * @throws IOException * */ public void doSomeOperation() throws IOException { // Get the inputStream InputStream inputStream = this.getClass().getClassLoader() .getResourceAsStream("myApp.properties"); Properties properties = new Properties(); System.out.println("InputStream is: " + inputStream); // load the inputStream using the Properties properties.load(inputStream); // get the value of the property String propValue = properties.getProperty("abc"); System.out.println("Property value is: " + propValue); } }
Pretty straight-forward. Now suppose the properties file is not at the root of the application, but inside a folder (let's name it config) in the web application, something like:
SampleApp.war | |-------- config | |------- myApp.properties | | |-------- WEB-INF | |---- classes | |----- org |------ myApp |------- MyPropertiesReader.class
There will just be one line change in the above code:
- publicvoiddoSomeOperation()throwsIOException{
- //GettheinputStream-->Thistimewehavespecifiedthefoldernametoo.
- InputStreaminputStream=this.getClass().getClassLoader()
- .getResourceAsStream("config/myApp.properties");
- Propertiesproperties=newProperties();
- System.out.println("InputStreamis:"+inputStream);
- //loadtheinputStreamusingtheProperties
- properties.load(inputStream);
- //getthevalueoftheproperty
- StringpropValue=properties.getProperty("abc");
- System.out.println("Propertyvalueis:"+propValue);
- }
public void doSomeOperation() throws IOException { //Get the inputStream-->This time we have specified the folder name too. InputStream inputStream = this.getClass().getClassLoader() .getResourceAsStream("config/myApp.properties"); Properties properties = new Properties(); System.out.println("InputStream is: " + inputStream); //load the inputStream using the Properties properties.load(inputStream); //get the value of the property String propValue = properties.getProperty("abc"); System.out.println("Property value is: " + propValue); }
That's all that is required to get it working.