title: Spring and Constants class from property file
body: <p>I want to create Constants class with public static final fields, which I get from Properties file. 
  <strong>The issue is that ClassLoader always null</strong>, and i can't get properties file InputStream. </p>
  
  <p>I'm using Spring Java Configuration and I know about @PropertySource and @Value spring annotations, but I think old-style Constants class more readable in code.</p>
  
  <pre><code>@Autowired
  Constants constants;//in every class that needs constant
  //...
  constants.getArticleLimit()
  </code></pre>
  
  <p>vs simple</p>
  
  <pre><code>Constants.ARTICLES_LIMIT //static var version
  </code></pre>
  
  <p><strong>Here's my code:</strong></p>
  
  <pre><code>package org.simpletest.utils
  
  import org.apache.log4j.Logger;
  
  import java.io.FileInputStream;
  import java.io.IOException;
  import java.io.InputStream;
  import java.util.Properties;
  
  public class Constants {
  
      private static final Logger LOG = Logger.getLogger(Constants.class);
  
      public static final int ARTICLES_LIMIT;
  
      public static final String PROPERTIES_LOCATION = "constants.properties";
  
      static {
          Properties p = new Properties();
  
          //default values
          int articlesLimit = 10;
  
          Class&lt;?&gt; clazz = Constants.class.getClass(); 
  
          ClassLoader cl = clazz.getClassLoader();
  
          //try to load from properties file
          try(final InputStream is = cl.getResourceAsStream(PROPERTIES_LOCATION)){
  
              p.load(is);
  
              articlesLimit= Integer.parseInt(p.getProperty("articleslimit"));
  
          } catch (IOException e) {
              LOG.debug(String.format("Unable to load {0} properties file. Getting constants by default values.",PROPERTIES_LOCATION),e);
          }
  
          ARTICLES_LIMIT = articlesLimit;
      }
  }
  </code></pre>