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.