PropertiesPicoContainer is a special type of PicoContainer that is populated from the entries in a properties file.

Here is an example of how to use PropertiesPicoContainer to map properties as configuration for a component, with parameter names as the bindings.

Consider this component:

public class BigFatComponent {
  URL spellWebService;
  int timeout;
  public BigFatComponent(String spellingWebServiceURL, int timeout) throws MalformedURLExeption {
    this.spellWebService = new URL(spellingWebServiceURL);
    this.timeout = timeout;
  }  
  public String toString() {
    return "URL=" + spellWebService + ", timeout=" + timeout;  
  }

  // other methods
}

For automatic binding of properties to parameter names of the component:

Properties defaultProperties = new Properties();
defaultProperties.load("my-application.properties");
        
// default properties are taken from here
PicoContainer propsContainer = new PropertiesPicoContainer(defaultProperties);
                
MutablePicoContainer mpc = new DefaultPicoContainer(propsContainer);
                
mpc.as(Characteristics.USE_NAMES).addComponent(BigFatComponent.class);

Here is another manual use forcing an association between a item in the properties file, and the relative position of a parameter in the constructor. It is most useful when there is not a tie-up between the parameter names and the properties. In this case the arg passed in to the ConfigParameter (varargs list) is the one that matches the property name:

mpc.addComponent(BigFatComponent.class, ConfigParameter("wsURL"), ConfigParameter("serviceTimeout"));

Type conversion is automatic in many cases. Properties in a properties file are clearly strings. Parameters can be any of:

PropertiesPicoContainer can be part of a tree of containers. It makes sense, of course, being more near the root of that tree.