Q:

Loading static properties file class

Currently I am using a singleton class to read and load the propertied file. I get an instance of this in any class where I want to use a property value. 
Would not it be better to use a static class instead which can be loaded once (when server started or something .. ) instead of using a singleton ? Why and why not  ? 
Moreover how can we load a static class OnServerStart or when war gets deployed. 
PS: Project is  web application

A:

Singleton is better for dependency injection and unit testing than statics.
You may inject an instance of singleton class or a Mock of that type to any other class under test.
public class PropertiesHolder {
   private static final PropertiesHolder INSTANCE = new PropertiesHolder();

   private final Properties props;

   private PropertiesHolder() {
       props = load();
   }

   public static PropertiesHolder getInstance() {
       return INSTANCE;
   }

   public String getProperty(String key) {
       return props.getProperty(key);
   }

   private Properties load() {
      ...
   }
} 

Then you may mock PropertiesHolder in your test: 
@RunWith(MockitoJUnitRunner.class)
public class MyTest { 

   @Mock private PropertiesHolder holder;

   @Test
   public void testSomething() {
      SomeService service = new SomeService(holder);

      when(holder.getProperty("foo")).thenReturn("bar");

      String result = service.doSomething(); 

      assertEquals(...)
   }

}

For production code you may use:
new SomeService(PropertiesHolder.getInstance()); 

Or even better, use DI framework, e.g. Spring, for wiring a beans. PropertiesHolder would be a generic bean with factory method getInstance() and the scope 'singleton'.
If you're using Spring in your web application I'd suggest using with it's PropertyPlaceholderConfigurer.
If you don't want to use Spring for that and need to do some actions (e.g. loading property file) on servlet when webapp is started then use ServletContextListener as Bhesh Gurung has suggested.

