title: Good library for parameter injection/properties management
body: <p>I have a <a href="https://gist.github.com/3868359" rel="nofollow">piece of code</a> that I have been using to manage properties for a while now. My boss didn't like this solution on the ground that property management should be done by well-known libraries, like Spring/Guice. That's understandable, and I'm looking for alternatives, but I can't find one that gives me the features that I want (or maybe I don't know how to use them properly).   </p>
  
  <p>The features I'm looking for are:</p>
  
  <ol>
      <li>
      SUPER easy to add new properties to a class during coding
      <ol>
          <li>No need to touch constructor, add dedicated field or setters</li>
          <li>Uses Java code (as much as possible)</li>
          <li>Easy to add defaults. No need to edit property file if you just want make something quickly configurable and keep the code working</li>
      </ol>
      <li>Can use any types (can define conversion from String within the framework)</li>
      <li>
      Custom validation that are run at config load time for each properties
      <ol>
          <li>E.g. check for existence for a file, check if defined conversion succeeds etc.</li>
      </ol>
      <li>Ability to inject parameters to final fields</li>
      <li>Ability to auto-generate property file TEMPLATE
      <ol>
          <li>Especially ability to define description, preferably in Java code which is then written to the template</li>
      </ol>
      </li>
      <li>Ability to update config at runtime, in a thread-safe manner</li>
  </ol>
  
  <p><strong>Are there any library that gives me these features?</strong>  </p>
  
  <p><strong>If I'm missing something and these can all be satisfied by Spring/Guice, are there any good resource online?</strong></p>
  
  <p><a href="https://gist.github.com/3868631" rel="nofollow">Example usage of my solution</a><br>
  <a href="https://gist.github.com/3868903" rel="nofollow">Sample of generated property file TEMPLATE (you copy and edit this)</a>  </p>